Android对图片的压缩读取和保存
2012-03-24 16:58
507 查看
在开发图片浏览器等软件是,很多时候要显示图片的缩略图,而一般情况下,我们要将图片按照固定大小取缩略图,一般取缩略图的方法是使用BitmapFactory的decodeFile方法,然后通过传递进去 BitmapFactory.Option类型的参数进行取缩略图,在Option中,属性值inSampleSize表示缩略图大小为原始图片大小的几分之一,即如果这个值为2,则取出的缩略图的宽和高都是原始图片的1/2,图片大小就为原始大小的1/4。
然而,如果我们想取固定大小的缩略图就比较困难了,比如,我们想将不同大小的图片去出来的缩略图高度都为200px,而且要保证图片不失真,那怎么办?我们总不能将原始图片加载到内存中再进行缩放处理吧,要知道在移动开发中,内存是相当宝贵的,而且一张100K的图片,加载完所占用的内存何止 100K?
经过研究,发现,Options中有个属性inJustDecodeBounds,研究了一下,终于明白是什么意思了,SDK中的E文是这么说的
If set to true, the decoder will return null (no bitmap), but the out... fields will still be set, allowing the caller to query the bitmap without having to allocate the memory for its pixels.
意思就是说如果该值设为true那么将不返回实际的bitmap不给其分配内存空间而里面只包括一些解码边界信息即图片大小信息,那么相应的方法也就出来了,通过设置inJustDecodeBounds为true,获取到outHeight(图片原始高度)和 outWidth(图片的原始宽度),然后计算一个inSampleSize(缩放值),然后就可以取图片了,这里要注意的是,inSampleSize 可能小于0,必须做判断。
具体代码如下:
这样我们就可以读取较大的图片而不会内存溢出了。如果你想把压缩后的图片保存在Sdcard上的话就很简单了:
ok,这样就把图片保存在/sdcard/feng.png这个文件里面了,呵呵。
但是这里的缩放保存是按长宽比例的,下边也可以按固定大小缩放哦:
然而,如果我们想取固定大小的缩略图就比较困难了,比如,我们想将不同大小的图片去出来的缩略图高度都为200px,而且要保证图片不失真,那怎么办?我们总不能将原始图片加载到内存中再进行缩放处理吧,要知道在移动开发中,内存是相当宝贵的,而且一张100K的图片,加载完所占用的内存何止 100K?
经过研究,发现,Options中有个属性inJustDecodeBounds,研究了一下,终于明白是什么意思了,SDK中的E文是这么说的
If set to true, the decoder will return null (no bitmap), but the out... fields will still be set, allowing the caller to query the bitmap without having to allocate the memory for its pixels.
意思就是说如果该值设为true那么将不返回实际的bitmap不给其分配内存空间而里面只包括一些解码边界信息即图片大小信息,那么相应的方法也就出来了,通过设置inJustDecodeBounds为true,获取到outHeight(图片原始高度)和 outWidth(图片的原始宽度),然后计算一个inSampleSize(缩放值),然后就可以取图片了,这里要注意的是,inSampleSize 可能小于0,必须做判断。
具体代码如下:
这样我们就可以读取较大的图片而不会内存溢出了。如果你想把压缩后的图片保存在Sdcard上的话就很简单了:
ok,这样就把图片保存在/sdcard/feng.png这个文件里面了,呵呵。
但是这里的缩放保存是按长宽比例的,下边也可以按固定大小缩放哦:
相关文章推荐
- Android 玩转图片(读取图片转化Bitmap,保存本地,采样压缩)
- Android对图片的压缩读取和保存
- Android开发技术:Android对图片的压缩读取和保存
- Androidr的图片的缩放、读取、压缩保存
- Android对图片的压缩读取和保存
- Android对图片的压缩读取和保存
- Androidr的图片的缩放、读取、压缩保存
- Android对图片的压缩读取和保存
- Android数据存储:获取网络图片把图片保存到SD卡中并从SDk卡中读取(通过Bitmap方法)
- Android 回调函数学习之图片压缩保存
- Android相机、相册获取图片显示(压缩)并保存到SD卡
- Android ImageUtils 图片工具类,包括:小米从相册调图像空指针,三星旋转照片,压缩图片,保存Bitmap到本地,获取本地视频的缩略图,毛化玻璃效果,代码以后会更新
- android 将图片保存在 array.xml 成string-array 以及读取
- Android 读取保存在本地的图片 (读取中的一个大坑)
- Android图片处理——压缩、裁剪、圆角、保存
- AndroidStudio——网络图片的读取与保存
- 常用的图片相关方法,读取,保存,压缩,缩放,旋转,drawable转化
- Android 调用用相机拍照保存在本地,imageview根据路径读取图片
- Android调用相机拍照,压缩图片后保存SD卡中