博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android大图裁剪解决办法
阅读量:7235 次
发布时间:2019-06-29

本文共 1360 字,大约阅读时间需要 4 分钟。

 某些功能需要拍照或者从相册选择照片后经过裁剪再上传的时候,

cropimage

可以调用手机自带的com.android.camera.action.CROP这个Intent进行裁剪
通过设置输出大小可以得到图片的大小:
intent.putExtra(“outputX”, outputX);
intent.putExtra(“outputY”, outputY);
但是当outputX或者outputY 大小设置为320以上的时候,会发现完全没有效果。
通过搜索才发现了这个问题原来是这样的:
Mobile devices typically have constrained system resources.
Android devices can have as little as 16MB of memory available to a single application.
在Android2.3中,默认的Bitmap为32位,类型是ARGB_8888,
也就意味着一个像素点占用4个字节的内存。3200*2400*4 bytes = 30M。
消耗这样大的内存当然不可能实现。

看看com.android.camera.action.CROP这个Intent可以设置的参数:


data和MediaStore.EXTRA_OUTPUT都是可选的传入数据选项,可以选择设置data为Bitmap,或者将相应的数据与URI关联起来,
你也可以选择是否返回数据(return-data: true)。

使用return Bitmap的话有限制不能太大,那么如果要裁剪大图的话只能使用URI这个参数了。
public Intent getCropImageIntent() {


Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType(“image/*”);
intent.putExtra(“crop”, “true”);
intent.putExtra(“aspectX”, 1);
intent.putExtra(“aspectY”, 1);
intent.putExtra(“outputX”, 600);
intent.putExtra(“outputY”, 600);
intent.putExtra(“noFaceDetection”, true);
intent.putExtra(“scale”, true);
intent.putExtra(“return-data”, false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
intent.putExtra(“outputFormat”, Bitmap.CompressFormat.JPEG.toString());
return intent;
}

源码下载地址:http://06peng.com/archives/192

     本文转自06peng 51CTO博客,原文链接:http://blog.51cto.com/06peng/1100029,如需转载请自行联系原作者

你可能感兴趣的文章
BZOJ 1297 迷路(矩阵)
查看>>
StimulReport.Net
查看>>
.NET应用框架架构设计实践 - 概述
查看>>
分享30个开发人员有用的CSS代码片段
查看>>
DataCleaner 3.1.1 发布,数据质量分析管理
查看>>
BZOJ3672 : [Noi2014]购票
查看>>
KeyTool
查看>>
一些Qtableview的用法:
查看>>
UGUI 全方位了解
查看>>
Codeforces Beta Round #3 B. Lorry 暴力 二分
查看>>
MFC TreeCtrl 控件(一):简单使用
查看>>
git与github
查看>>
加密算法使用(一):用CRC32来压缩32uuid字符串
查看>>
Genymotion配置及使用教程(最新最完整版附各部分下载地址)
查看>>
C++学习 —— 灵活的继承特性
查看>>
Android消息异步机制(ThreadLocal、MessageQueue、Looper、Handler关系总结)
查看>>
JS对JSON的操作总结
查看>>
DNA分子结构3D模型
查看>>
怎样使用alsa API
查看>>
如何恢复手机误删的文件?
查看>>