
android调用系统的自定义裁剪后得到的图片不清晰,使用MediaStore.EXTRA_OUTPUT获取缓存下的清晰图片...
发布日期:2021-05-28 05:49:52
浏览次数:26
分类:精选文章
本文共 1868 字,大约阅读时间需要 6 分钟。
方式如下,可以直接设置裁剪宽和高比例,并通过自定义路径保存剪切后的图片,避免占用内存。具体实现方式如下:
在onActivityResult
方法中处理剪切结果。例如,使用requestCode1
处理剪切后的结果。
调用photoClip
方法,使用系统自带的剪切工具,并通过设置return-data=false
来禁用data
域返回。
在剪切意图中添加EXTRA_OUTPUT
参数,指定一个自定义的文件路径和文件名,便于存储剪切后的图片。
在onActivityResult
中根据返回的requestCode调用方法处理剪切数据。
代码如下:
protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case RESULT_CANCELED: ToastUtil.showCenter(R.string.cancel); return; case 111: if (USER_ICON.exists()) { photoClip(Uri.fromFile(USER_ICON), 1, this); } break; case 1: try { BitmapFactoryOptions options = new BitmapFactoryOptions(); options.inPreferredSize = new int[]{160, 160}; // 可以根据需要调整尺寸 BitmapFactory.decodeStream(getContentResolver().openInputStream(tempPhotoUri), options); } catch (Exception e) { // handle exception,如图片未找到等 } break; } super.onActivityResult(requestCode, resultCode, data);}
此外,在剪切设置中可以设置默认的裁剪宽高比等参数:
public void photoClip(Uri uri, int requestCode, Activity a) { Intent intent = new Intent(); intent.setAction("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true"); intent.putExtra("aspectX", 3); // 比例比如1:1是9,常用比例如3:4为12等 intent.putExtra("aspectY", 4); // 比例 intent.putExtra("outputX", 320); intent.putExtra("outputY", 320); intent.putExtra("return-data", false); intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri()); intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); intent.putExtra("noFaceDetection", true); a.startActivityForResult(intent, requestCode);}
通过以上设置,可以实现自定义剪切并存储在指定路径,避免卡顿问题。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年05月04日 07时48分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Accessibility
2023-01-23
CentOS 系列:CentOS 7文件系统的组成
2023-01-23
Docker部署postgresql-11以及主从配置
2023-01-23
EnvironmentNotWritableError: The current user does not have write permissions to the target environm
2023-01-23
kali安装docker(亲测有效)
2023-01-23
PHP系列:PHP 基础编程 2(时间函数、数组---实现登录&注册&修改)
2023-01-23
PHP系列:使用PHP实现登录注册功能的完整指南
2023-01-23
"WARNING: Increasing RAM size to 1GB" and "Cannot set up guest memory 'xxx.ram': Invalid argument".
2023-01-23
(反射+内省机制的运用)简单模拟spring IoC容器的操作
2023-01-23
04-docker-commit构建自定义镜像
2023-01-23
05-docker系列-使用dockerfile构建镜像
2023-01-23
09-docker系列-docker网络你了解多少(下)
2023-01-23
#C8# UVM中的factory机制 #S8.2.3# 重载sequence哪些情形
2023-01-24
cytoscape安装java_Cytoscape史上最全攻略
2023-01-24
c语言编写单片机中断,C语言AVR单片机中断程序写法
2023-01-24
ddr2的上电顺序_S5PV210 DDR2初始化 28个步骤总结
2023-01-24
java教学团队管理系统(ssm)
2023-01-24
java教学网站(ssm)
2023-01-24