如何优化图片占用的内存空间?
来源:互联网 发布:二维码在线设计软件 编辑:程序博客网 时间:2024/06/05 15:30
对于加载图片,一般为了尽可能避免OOM都会按照如下做法:
对于图片显示:根据需要显示图片控件的大小对图片进行压缩显示(采样率inSampleSize及矩阵Matrix)。 如果图片数量非常多:则会使用LruCache等缓存机制,将所有图片占据的内容维持在一个范围内。
其实对于图片加载还有种情况,就是单个图片非常巨大,并且还不允许压缩。比如显示:世界地图、清明上河图等。
需要使用Android系统自带的BitmapRegionDecoder。
1 矩阵Matrix 实列代码 ps:使用Matrix进行放大,虽然图像大了,但并没有占用更多的内存。
放大缩小
private Bitmap imageSale(Bitmap b,float salex, float saley){ Matrix matrix = new Matrix(); matrix.postScale(salex,saley); return Bitmap.createBitmap(b,0,0,b.getWidth(),b.getHeight(),matrix,true); }
还有利用 Matrix 实现 平移,旋转等等。
2 BitmapRegionDecoder 简单例子。在此基础上可以进行图片的拖拽,放大缩小。
InputStream inputStream = getAssets().open(tangyan.jpg); //获得图片的宽、高 BitmapFactory.Options tmpOptions = new BitmapFactory.Options(); tmpOptions.inJustDecodeBounds = true; BitmapFactory.decodeStream(inputStream, null, tmpOptions); int width = tmpOptions.outWidth; int height = tmpOptions.outHeight; //设置显示图片的中心区域 BitmapRegionDecoder bitmapRegionDecoder = BitmapRegionDecoder.newInstance(inputStream, false); BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.RGB_565; Bitmap bitmap = bitmapRegionDecoder.decodeRegion(new Rect(width / 2 - 100, height / 2 - 100, width / 2 + 100, height / 2 + 100), options); mImageView.setImageBitmap(bitmap);
阅读全文
0 0
- 如何优化图片占用的内存空间?
- 类占用的内存空间
- 类的内存空间占用
- 【内存空间】01. 指针占用的内存空间大小
- 枚举类型占用的内存空间
- 指针占用的内存空间大小
- c++类占用的内存空间
- 占用内存空间
- 优化 UWP 中图片的内存占用
- 优化 UWP 中图片的内存占用
- Java对象占用内存空间的大小
- 结构体占用内存空间的问题
- C++中结构体的内存空间占用
- android查看当前应用占用的内存空间
- android Imageview bitmap 占用内存空间的计算
- 自定义类所占用的内存空间
- C#程序最大占用的内存空间
- 优化图片内存占用
- Android Butterknife 8.4.0 使用方法总结 zelezny : Butterknife插件的使用
- 使用databinding,实现简单全面的百分比布局(屏幕适配的大招)
- iOS ARC与MRC混编的一些解决方法
- 算法提高 题目 2 密码锁 (bfs最少步数)
- Maven 在pom.xml中配置Jetty出现'org.eclipse.jetty.server.nio.SelectChannelConnector' cannot be loaded异常
- 如何优化图片占用的内存空间?
- c&cppAPI
- C# 理解Thread.Sleep()方法
- shell 数组
- Android:小米手机读取图库图片以字符串的形式上传到服务器
- 基于springMVC的HelloWorld实例
- svg viewBox的使用
- Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容。
- 欢迎使用CSDN-markdown编辑器