利用BitmapFactory.Options类解决图片过大问题
来源:互联网 发布:淘宝卖家被敲诈 编辑:程序博客网 时间:2024/05/18 02:36
要展示图片给用户看时,其实只需要实现大小合适的Bitmap对象就可以了,如果要从文件生成BItmap对象,需要BitmapFactory类:
Bitmap bitmap=BitmapFactory.decodeFile(mPhotoFile.getPath());
然而,Bitmap是一个简单对象,只能存储实际像素值。因此,哪怕图片已经压缩过了,一存入Bitmap中,文件还是会放大,比如就一张5M的jpg,存入Bitmap立马变成40多M。
所以,我们需要手工对图片进行缩放。先放下实现代码类:
public class PictureUtils { public static Bitmap getScaledBitmap(String path,int destWidth,int destHeight){ BitmapFactory.Options options=new BitmapFactory.Options(); options.inJustDecodeBounds=true; BitmapFactory.decodeFile(path,options); float srcWidth=options.outWidth; float srcHeight=options.outHeight; int inSampleSize=1; if(srcHeight>destHeight||srcWidth>destWidth){ if(srcWidth>srcHeight){ inSampleSize=Math.round(srcHeight/destHeight); }else{ inSampleSize=Math.round(srcWidth/destWidth); } } options=new BitmapFactory().Options(); options.inSampleSize=inSampleSize; return BitmapFactory.decodeFile(path,options); }}
BitmapFactory.Options这个类,有一个字段inJustDecodeBounds,
如果我们把这个字段设为true,那么BitmapFactory.decodeFile(String , Options )并不会真的返回一个Bitmap给你,它仅仅会把它的宽,高返回。
然后再说一下inSampleSize,这个值是核心,可以决定缩略像素的大小。值为1时,表示缩略图和原始照片一样大小。如果是2,水平像素就是2:1,缩略图像素就是原始照片的1/4. 通过这些处理,最后把合适大小的图片返回。
0 0
- 利用BitmapFactory.Options类解决图片过大问题
- BitmapFactory.Options解决Android加载图片内存溢出的问题
- BitmapFactory.Options 图片解析
- BitmapFactory.Options压缩图片
- Android图片 BitmapFactory.Options.inSampleSize 采样率不准确问题
- BitmapFactory.decodeFile图片过大内存溢出
- Android使用BitmapFactory.Options压缩图片解决加载大图片内存溢出
- BitmapFactory.Options操作图片显示大小
- BitmapFactory.Options处理图片的缩放
- Android加载图片内存溢出BitmapFactory.Options
- 图片压缩--BitmapFactory.Options的使用
- 通过BitmapFactory.Options来缩放图片
- 内存加载图片压缩 BitmapFactory.Options
- Android解决图片上传过大问题
- BitmapFactory.Options 解决加载大图片OOM
- BitmapFactory.Options 解决加载大图片OOM
- BitmapFactory.Options 解决加载大图片OOM
- BitmapFactory.Options 解决加载大图片OOM
- Java(标准输入/输出流)
- 【UI】UILabel的详细使用
- css3动画属性--animation(动画)
- Go语言基础:struct
- ACM学习历程24——最大回文子串
- 利用BitmapFactory.Options类解决图片过大问题
- c语言练习题——指针和链表训练
- 显卡学习
- this关键字和super关键字
- leetcode作业完成在这个blog //更新于17.1.8
- 关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究
- Ubuntu下安装和配置Scala教程
- WebViewJavascriptBridge源码探究--看OC和JS交互过程(介绍了WebViewJavascriptBridge的实现过程)
- Android webView拦截url