Android 使用intent对Bitmap的处理(拍照、裁剪、从图库选择)

原文地址:

上(原理):http://blog.csdn.net/floodingfire/article/details/8144604

中(相册):http://blog.csdn.net/floodingfire/article/details/8144615

下(相机):http://blog.csdn.net/floodingfire/article/details/8144617


重要点:

1.

附加选项数据类型描述
cropString发送裁剪信号
aspectXintX方向上的比例
aspectYintY方向上的比例
outputXint裁剪区的宽
outputYint裁剪区的高
scaleboolean是否保留比例
return-databoolean是否将数据保留在Bitmap中返回
dataParcelable相应的Bitmap数据
circleCropString圆形裁剪区域?
MediaStore.EXTRA_OUTPUT ("output")URI将URI指向相应的file:///...,详见代码示例

此图的scale标志:true表示无论如何拖动都已经固定了裁剪框的大小。

return-data:如果裁剪的图片过大,不宜保存在内存中,最好通过Uri来保存,可以试着return-data为false,通过MediaStore.EXTRA_OUTPUT的uri来保存。

拍照时可以利用tempUri,相册选取时利用data.getExtras返回的Uri直接设置即可。

注意:uri必须以file://开头,不然会导致“无法保存剪裁的图片”的错误。


2.安卓默认允许的应用内存为16M,查看Bitmap的Config可以看到

public static final Bitmap.Config ALPHA_8
public static final Bitmap.Config ARGB_4444
public static final Bitmap.Config ARGB_8888
public static final Bitmap.Config RGB_565

这四种枚举值代表图片的存储方式,A为alpha,R为red,G为green,B为blue。

所以可知其位数:

public static final Bitmap.Config ALPHA_8,位数8
public static final Bitmap.Config ARGB_4444 ,位数4+4+4+4 = 16
public static final Bitmap.Config ARGB_8888,位数8+8+8+8 = 32
public static final Bitmap.Config RGB_565,位数5+6+5 = 16

计算加载bitmap所需内存时,用像素值*位数即可,eg:1920*1080*32 表示1920*1080的存储方式为ARGB_8888的位图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值