您的位置:首页 > 移动开发 > Android开发

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

2014-10-27 21:24 369 查看
原文地址:

上(原理):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的位图
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: