unity 截图到相册截完图片后,点开图片时,不小心更改了打开方式,把相册选择成默

25292人阅读
在这两天开发过程中要实现一个更换封面的功能,图片可以从系统图库或者照相机拍照,虽然可以通过Intent意向传递简单获取系统功能,但是在处理图片的时候还是遇到了很多问题。
首先我们创建一个uri指向图片路径
Uri imageUri = Uri.parse(file:///sdcard/temp.jpg);
这个uri将在下面的图片存储方面起到关键作用
调用系统相机的action为MediaStore.ACTION_IMAGE_CAPTURE
以下为启动系统相机的方法
Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePhotoIntent .putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(takePhotoIntent , CAMERA_REQUEST);
调用系统图库的action为Intent.ACTION_GET_CONTENT , 跟相机取照片方法有所不同,它可以直接通过intent参数传递进入裁剪界面,对应方法为:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType(&image/*&);
intent.putExtra(&crop&, &true&);
//裁剪框比例
intent.putExtra(&aspectX&, 2);
intent.putExtra(&aspectY&, 1);
//图片输出大小
intent.putExtra(&outputX&, 600);
intent.putExtra(&outputY&, 300);
intent.putExtra(&scale&, true);
intent.putExtra(&return-data&, false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.putExtra(&outputFormat&, pressFormat.JPEG.toString());
//不启用人脸识别
intent.putExtra(&noFaceDetection&, false);
startActivityForResult(openAlbumIntent, PHOTO_ALBUM_REQUEST);
这样我们在选择了一张图片后就可进入图片裁剪界面了,裁剪框比例就是我们上面设置的比例,然后将裁剪完成的图片存放到我们指定的uri指向的路径
上面我们说到拍照取照片与调图库取有所不同,调图库取上面已经基本实现了,拍照取照片的步骤为先传递意向到照相机,照相机拍完照后会返回或输出数据,输出的数据即为我们所需要的图片的数据,取到图片的数据后我们将它放入uri对象中,传递到裁剪界面去,为什么要用uri传递,是考虑到Android的内存问题,在有限的android内存分配下如果传递位图可能会出现内存溢出的异常,利用uri即可避免这种情况的发生,下面贴出传递uri并进入裁剪界面的代码:
& &Intent intent = new Intent(&com.android.camera.action.CROP&);
intent.setDataAndType(uri, &image/*&);
intent.putExtra(&crop&, &true&);//可裁剪
intent.putExtra(&aspectX&, 2);
intent.putExtra(&aspectY&, 1);
intent.putExtra(&outputX&, outputX);
intent.putExtra(&outputY&, outputY);
intent.putExtra(&scale&, true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.putExtra(&return-data&, false);//若为false则表示不返回数据
intent.putExtra(&outputFormat&, pressFormat.JPEG.toString());
intent.putExtra(&noFaceDetection&, true);
startActivityForResult(intent, requestCode);
再在返回的结果里把uri转换成我们需要的位图:
Bitmap bitmap = BitmapFactory.decodeStream(context.getContentResolver().openInputStream(uri));
最后通过ImageView的setImageBitmap方法即可完成设置
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:37732次
排名:千里之外
(1)(1)(2)(1)(1)(1)

我要回帖

更多关于 不小心删了手机相册 的文章

 

随机推荐