Android中图片压缩方案详解.doc

Android中图片压缩方案详解.doc

ID:53881069

大小:66.00 KB

页数:16页

时间:2020-04-10

Android中图片压缩方案详解.doc_第1页
Android中图片压缩方案详解.doc_第2页
Android中图片压缩方案详解.doc_第3页
Android中图片压缩方案详解.doc_第4页
Android中图片压缩方案详解.doc_第5页
资源描述:

《Android中图片压缩方案详解.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Android中图片压缩方案详解1、质量压缩法设置bitmapoptions属性,降低图片的质量,像素不会减少第一个参数为需要压缩的bitmap图片对象,第二个参数为压缩后图片保存的位置设置options属性0-100,来实现压缩。privateBitmapcompressImage(Bitmapimage){ByteArrayOutputStreambaos=newByteArrayOutputStream();image.compress(Bitmap.CompressFormat.JPEG,100,baos);//质量压缩方法,这里100表示不

2、压缩,把压缩后的数据存放到baos中intoptions=100;while(baos.toByteArray().length/1024>100){//循环判断如果压缩后图片是否大于100kb,大于继续压缩baos.reset();//重置baos即清空baosimage.compress(Bitmap.CompressFormat.JPEG,options,baos);//这里压缩options%,把压缩后的数据存放到baos中options-=10;//每次都减少10}ByteArrayInputStreamisBm=newByteArrayI

3、nputStream(baos.toByteArray());//把压缩后的数据baos存放到ByteArrayInputStream中Bitmapbitmap=BitmapFactory.decodeStream(isBm,null,null);//把ByteArrayInputStream数据生成图片returnbitmap;}质量压缩不会减少图片的像素。它是在保持像素不变的前提下改变图片的位深及透明度等,来达到压缩图片的目的。进过它压缩的图片文件大小会有改变,但是导入成bitmap后占得内存是不变的。因为要保持像素不变,所以它就无法无限压缩,到

4、达一个值之后就不会继续变小了。显然这个方法并不适用于缩略图,其实也不适用于想通过压缩图片减少内存的适用,仅仅适用于想在保证图片质量的同时减少文件大小的情况而已。2、采样率压缩法privateBitmapgetimage(StringsrcPath){BitmapFactory.OptionsnewOpts=newBitmapFactory.Options();//开始读入图片,此时把options.inJustDecodeBounds设回true了newOpts.inJustDecodeBounds=true;Bitmapbitmap=BitmapF

5、actory.decodeFile(srcPath,newOpts);//此时返回bm为空newOpts.inJustDecodeBounds=false;intw=newOpts.outWidth;inth=newOpts.outHeight;//现在主流手机比较多是1280*720分辨率,所以高和宽我们设置为floathh=1280f;//这里设置高度为1280ffloatww=720f;//这里设置宽度为720f//缩放比。由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可intbe=1;//be=1表示不缩放if(w>h&&w>ww){

6、//如果宽度大的话根据宽度固定大小缩放be=(int)(newOpts.outWidth/ww);}elseif(whh){//如果高度高的话根据宽度固定大小缩放be=(int)(newOpts.outHeight/hh);}if(be<=0)be=1;newOpts.inSampleSize=be;//设置缩放比例//重新读入图片,注意此时已经把options.inJustDecodeBounds设回false了bitmap=BitmapFactory.decodeFile(srcPath,newOpts);returncompress

7、Image(bitmap);//压缩好比例大小后再进行质量压缩}这个方法的好处是大大的缩小了内存的使用,在读存储器上的图片时,如果不需要高清的效果,可以先只读取图片的边,通过宽和高设定好取样率后再加载图片,这样就不会过多的占用内存。3、缩放法通过缩放图片像素来减少图片占用内存大小。+方式一publicstaticvoidcompressBitmapToFile(Bitmapbmp,Filefile){//尺寸压缩倍数,值越大,图片尺寸越小intratio=2;//压缩Bitmap到对应尺寸Bitmapresult=Bitmap.createBitma

8、p(bmp.getWidth()/ratio,bmp.getHeight()/ratio,Config.AR

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。