【Andorid X 项目笔记】魅族照片剪切问题(4)
前言
魅族手机调用系统图片剪切功能的问题。
声明
欢迎转载,但请保留文章原始出处:)
博客园:http://www.cnblogs.com
农民伯伯: http://over140.cnblogs.com
系列
1、【Andorid X 项目笔记】禁用ListView的Fling功能(1)
2、【Andorid X 项目笔记】动态设置ViewPager的Adapter问题(2)
3、 【Andorid X 项目笔记】TextView字幕效果(3)
正文
一、调用图片剪切的代码
/**
* 用于截取大图
*
* @param ctx
* @param uri
* @param outputX
* @param outputY
* @param requestCode
*/
public static void cropImageUri(Activity ctx, Uri uri, int outputX, int outputY, int requestCode, boolean scale) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, IMAGE_UNSPECIFIED);
intent.putExtra("crop", "true");//发送裁剪信号
intent.putExtra("outputX", outputX);//裁剪区的宽
intent.putExtra("outputY", outputY);//裁剪区的高
intent.putExtra("aspectX", 1);//X方向上的比例
intent.putExtra("aspectY", 1);//Y方向上的比例
intent.putExtra("scale", scale);//是否保留比例
//intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);//直接输出文件
intent.putExtra("return-data", true); //是否返回数据
// intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", true); //关闭人脸检测
ctx.startActivityForResult(intent, requestCode);
}
* 用于截取大图
*
* @param ctx
* @param uri
* @param outputX
* @param outputY
* @param requestCode
*/
public static void cropImageUri(Activity ctx, Uri uri, int outputX, int outputY, int requestCode, boolean scale) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, IMAGE_UNSPECIFIED);
intent.putExtra("crop", "true");//发送裁剪信号
intent.putExtra("outputX", outputX);//裁剪区的宽
intent.putExtra("outputY", outputY);//裁剪区的高
intent.putExtra("aspectX", 1);//X方向上的比例
intent.putExtra("aspectY", 1);//Y方向上的比例
intent.putExtra("scale", scale);//是否保留比例
//intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);//直接输出文件
intent.putExtra("return-data", true); //是否返回数据
// intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", true); //关闭人脸检测
ctx.startActivityForResult(intent, requestCode);
}
二、问题
参照魅族官方论坛帖子:com.android.camera.action.CROP照片剪辑的问题
具体表现为剪切完成后在onActivityResult 中取不到data数据。其他机器目前没有发现这样的问题
三、解决办法
mPhoto = extras.getParcelable("data");
if (mPhoto == null) {
String filePath = extras.getString("filePath");
if (!StringUtils.isEmpty(filePath))
mPhoto = ImageUtils.decodeSampledBitmapFromFile(filePath, 400, 600);
}
if (mPhoto == null) {
String filePath = extras.getString("filePath");
if (!StringUtils.isEmpty(filePath))
mPhoto = ImageUtils.decodeSampledBitmapFromFile(filePath, 400, 600);
}
代码说明:
虽然魅族的机器没有返回data字段,但是返回了filePath,是相册选中地址的路径,可以把这个图片按尺寸获取一下。注意可能丢失剪切效果,目前暂时这样处理的。
分类:
4、Android
标签:
meizu action.CROP
, 魅族截图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!