时间:2021-05-20
本文实例讲述了Android实现简单图片压缩的方法。分享给大家供大家参考,具体如下:
在开发图片浏览器等软件是,很多时候要显示图片的缩略图,而一般情况下,我们要将图片按照固定大小取缩略图,一般取缩略图的方法是使用BitmapFactory的decodeFile方法,然后通过传递进去 BitmapFactory.Option类型的参数进行取缩略图,在Option中,属性值inSampleSize表示缩略图大小为原始图片大小的几分之一,即如果这个值为2,则取出的缩略图的宽和高都是原始图片的1/2,图片大小就为原始大小的1/4。
然而,如果我们想取固定大小的缩略图就比较困难了,比如,我们想将不同大小的图片去出来的缩略图高度都为200px,而且要保证图片不失真,那怎么办?我们总不能将原始图片加载到内存中再进行缩放处理吧,要知道在移动开发中,内存是相当宝贵的,而且一张100K的图片,加载完所占用的内存何止 100K?
我们发现,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,必须做判断。
具体代码如下:
FrameLayout fr=(FrameLayout)findViewById(R.id.FrameLayout01);BitmapFactory.Options options =new BitmapFactory.Options();options.inJustDecodeBounds =true;// 获取这个图片的宽和高Bitmap bitmap =BitmapFactory.decodeFile("/sdcard/test.jpg", options); //此时返回bm为空options.inJustDecodeBounds =false; //计算缩放比int be = (int)(options.outHeight/ (float)200);if (be <= 0) be = 1;options.inSampleSize = be;//重新读入图片,注意这次要把options.inJustDecodeBounds 设为 false哦bitmap=BitmapFactory.decodeFile("/sdcard/test.jpg",options);int w = bitmap.getWidth();int h = bitmap.getHeight();System.out.println(w+" "+h);ImageView iv=new ImageView(this);iv.setImageBitmap(bitmap);这样我们就可以读取较大的图片而不会内存溢出了。如果你想把压缩后的图片保存在Sdcard上的话就很简单了:
File file=new File("/sdcard/feng.png");try { FileOutputStream out=newFileOutputStream(file); if(bitmap.compress(Bitmap.CompressFormat.PNG, 100, out)){ out.flush(); out.close(); }} catch (FileNotFoundException e){ // TODO Auto-generated catchblock e.printStackTrace();} catch (IOException e) { // TODO Auto-generated catchblock e.printStackTrace();}更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android数据库操作技巧总结》、《Android编程之activity操作技巧总结》、《Android文件操作技巧汇总》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Android编程实现压缩图片并加载显示的方法。分享给大家供大家参考,具体如下:解析:图片压缩的关键就是options.inSampleSize=
android图片压缩方法:第一:质量压缩法:复制代码代码如下:privateBitmapcompressImage(Bitmapimage){ByteArra
本文实例讲解了php上传图片并压缩的实现方法,之前一篇《PHP实现图片上传并压缩》已经为大家进行了简单介绍,此次实现上传图片然后按照比例缩略图,指定缩略图的最大
本文实例讲述了Android开发之图片压缩实现方法。分享给大家供大家参考,具体如下:由于Android本身的机制限定由于系统对每个应用内存分配规则的限制,如果加
Android图片压缩几种方式总结图片压缩在Android开发中很常见也很重要,防止图片的OOM也是压缩的重要原因。首先看下Bitmap图片文件的大小的决定因素