简单实现拍照或者从相册中选取并且剪裁
来源:互联网 发布:柯南主线 知乎 编辑:程序博客网 时间:2024/05/16 13:54
每个项目都少不了拍照这个功能,因为你要让用户自己的设置头像
直接上代码
public class MainActivity extends AppCompatActivity{ private Uri imageUri; private ImageView image; private String path; @Override protected void onCreate (Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); image = (ImageView) findViewById(R.id.ima); } public void phone (View viw){ File outputImage = new File(Environment.getExternalStorageDirectory(), "output_image.jpg"); try{ if(outputImage.exists()){ outputImage.delete(); } outputImage.createNewFile(); }catch(IOException e){ e.printStackTrace(); } if(Build.VERSION.SDK_INT >= 24){ imageUri = FileProvider.getUriForFile(MainActivity.this, "com", outputImage); }else{ imageUri = Uri.fromFile(outputImage); } Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(intent, 1); } public void phone1 (View view){ chooseFromGallery(); } /** * 从相册选择图片 */ private void chooseFromGallery (){ //构建一个内容选择的Intent Intent intent = new Intent(Intent.ACTION_GET_CONTENT); //设置选择类型为图片类型 intent.setType("image/*"); //打开图片选择 startActivityForResult(intent, 2); } @RequiresApi(api = Build.VERSION_CODES.KITKAT) @Override protected void onActivityResult (int requestCode, int resultCode, Intent data){ switch(requestCode){ case 1: if(resultCode == RESULT_OK){ Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(imageUri, "image/*"); intent.putExtra("scale", true); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(intent, 3); } break; case 2: if(data == null){ return; }else{ //用户从图库选择图片后会返回所选图片的Uri //获取到用户所选图片的Uri imageUri = data.getData(); //返回的Uri为content类型的Uri,不能进行复制等操作,需要转换为文件Uri // uri = convertUri(uri); //startImageZoom(uri); Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(imageUri, "image/*"); intent.putExtra("scale", true); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(intent, 4); } break; case 3: try{ Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri)); path = imageUri.getPath(); image.setImageBitmap(bitmap); }catch(FileNotFoundException e){ e.printStackTrace(); } break; case 4: try{ Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri)); image.setImageBitmap(bitmap); }catch(FileNotFoundException e){ e.printStackTrace(); } //获取绝对路径 if(DocumentsContract.isDocumentUri(this, imageUri)){ String docId = DocumentsContract.getDocumentId(imageUri); if("com.android.providers.media.documents".equals(imageUri.getAuthority())){ String id = docId.split(":")[1]; String selection = MediaStore.Images.Media._ID + "=" + id; path = getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection); }else if("com.android.providers.downloads.documents".equals(imageUri.getAuthority())){ Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(docId)); path = getImagePath(contentUri, null); }else if("content".equalsIgnoreCase(imageUri.getScheme())){ path = imageUri.getPath(); }else if("file".equalsIgnoreCase(imageUri.getScheme())){ path = imageUri.getPath(); }else{ } }else{ path = getImagePath(imageUri, null); } break; } } private String getImagePath (Uri uri, String selection){ String path = null; Cursor cursor = getContentResolver().query(uri, null, selection, null, null); if(cursor != null){ if(cursor.moveToFirst()){ path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); } cursor.close(); } return path; }}
不要忘了添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
0 0
- 简单实现拍照或者从相册中选取并且剪裁
- iOS设备的摄像头进行拍照,视频。并且从相册中选取我们需要的图片或者视频。
- Intent拍照,从相册中选取
- 从相册中选取图片
- 拍照和从相册中选取照片,并保存到SD卡上
- Android完美满足你所有的拍照或从相册中选取照片
- android:拍照,相册剪裁的实现方式
- 拍照或者从相册选择
- Android开发从相册中选取照片
- 切换头像,拍照或者相册选择后剪裁
- 拍照后压缩、 在相册中选取照片
- Android调用手机拍照以及从相册选择照片,剪裁
- 从相册,相机拍照,并对图片进行剪裁
- 拍照或者从相册选择工具类
- 最简单实现从相册和拍照中获取图片
- 用户头像从相机或者相册选择并剪裁
- 相机的调用以及从相册中选取图片
- 拍照,选择照片并且剪裁
- FragmentPagerAdapter的用法详解
- 查看磁盘空间
- 百度分享插件 js异步添加的内容如何实现分享的功能
- jmeter函数开发实现返回随机字符串
- 详细的KVO总结,包括基本改变,使用案例,注意点.看我就够了!
- 简单实现拍照或者从相册中选取并且剪裁
- Tensorflow | 读取csv文件
- Maven OutOfMemoryError: PermGen space
- jlink v8 for s3c2440a 设置
- Spark core 2.0 PackedRecordPointer
- jmeter发送soap请求-webservice接口
- 垂直同步是什么意思,到底是打开还是关闭垂直同步?
- nginx反向代理
- 在sqlite 中android如何转义特殊字符