我是靠谱客的博主 傲娇山水,最近开发中收集的这篇文章主要介绍Android压缩图片的几种方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

   转自:http://blog.sina.com.cn/s/blog_7f311ef501017zhs.html

在移动设备上进行图片相关软件的开发,一定得先压缩图片,毕竟移动设备的内存有限,稍不注意就会导致内存溢出,刚好用到这里,就学习了一下相关的压缩图片,现在总结出来和大家共享。

     一般情况下,我们要将图片按照固定大小取缩略图,一般取缩略图的方法是使用 BitmapFactory的decodeFile方法,然后通过传递进去 BitmapFactory.Option类型的参数进行取缩略图,在Option中,属性值inSampleSize表示缩略图大小为原始图片大小的几分之一,即如果这个值为2,则取出的缩略图的宽和高都是原始图片的1/2,图片大小就为原始大小的1/4。 Options中有个属性inJustDecodeBounds,SDK中的英文引用如下:
If set totrue, the decoder will return null (no bitmap), but the out... fields will stillbe set, allowing the caller to query the bitmap without having to allocate thememory for its pixels.
大致意思就是说如果该值设为true那么将不返回实际的bitmap不给其分配内存空间而里面只包括一些解码边界信息即图片大小信息,那么相应的方法也就出来了,通过设置inJustDecodeBounds为true,获取到outHeight(图片原始高度)和 outWidth(图片的原始宽度),然后计算一个inSampleSize(缩放值),然后就可以取图片了,这里要注意的是,inSampleSize 可能小于0,必须做判断。

                 BitmapFactory.Options options = new BitmapFactory.Options();
                 options.inJustDecodeBounds = true;
                 pic[i]  = BitmapFactory.decodeFile(path[i], options); //此时返回bm为空
                 options.inJustDecodeBounds = false;
                //缩放比
                 int be = (int)(options.outHeight / (float)215);
                  if (be <= 0)
                      be = 1;
                 options.inSampleSize = be;
                 options.inSampleSize = computeSampleSize(options, -1, 300*350); 
                  //重新读入图片,注意这次要把options.inJustDecodeBounds 设为 false哦
                 pic[i]  = BitmapFactory.decodeFile(path[i], options);

这是option的UML图:

Android压缩图片的几种方法
           

这样出来的图片一般不会失真,但是当你压缩的长宽比例相差较大时还会有失真现象。

这个是等比例缩放:
bitmap = Bitmap.createScaledBitmap(bitmap, width, height, false);width和height是缩放后的大小,true表示过滤,可消除锯齿感。

newBitmap = Bitmap.createBitmap(oldBitmap, 0, 0, width, height, matrix, true);//用距阵的方式缩放

这个是截取图片某部分:
bitmap = Bitmap.createBitmap(bitmap, x, y, width, height);,意思是从(x,y)开始截取width宽和height高大小的图片。

这些就是android系统中压缩图片的几个方法了。

最后

以上就是傲娇山水为你收集整理的Android压缩图片的几种方法的全部内容,希望文章能够帮你解决Android压缩图片的几种方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部