繁体   English   中英

如何在Android中为imageview压缩图像

[英]how to compress image for imageview in android

嗨,我想在存储卡中显示3或4张图像,图像大小约为1-2 MB。 我的问题是,当我在imageview中使用图像时,它抛出了内存不足的异常,当我将图像解码为位图时,我具有创建位并通过选项

02-26 13:16:54.946: ERROR/dalvikvm-heap(23410): 15980544-byte external allocation too large for this process.
02-26 13:16:54.946: ERROR/dalvikvm(23410): Out of memory: Heap Size=3407KB, Allocated=2801KB, Bitmap Size=15630KB, Limit=21884KB
02-26 13:16:54.946: ERROR/dalvikvm(23410): Trim info: Footprint=3463KB, Allowed Footprint=3655KB, Trimmed=248KB
02-26 13:16:54.946: ERROR/GraphicsJNI(23410): VM won't let us allocate 15980544 bytes
02-26 13:16:54.986: ERROR/AndroidRuntime(23410): FATAL EXCEPTION: main
02-26 13:16:54.986: ERROR/AndroidRuntime(23410): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
02-26 13:16:54.986: ERROR/AndroidRuntime(23410):     at android.graphics.BitmapFactory.nativeDecodeFile(Native Method)
02-26 13:16:54.986: ERROR/AndroidRuntime(23410):     at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:325)

任何人都可以帮助我解决问题吗?

我发现我的问题的解决方案是我的代码:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inTempStorage = new byte[24*1024];  
options.inJustDecodeBounds = false;
options.inSampleSize=32;     
bmp1=BitmapFactory.decodeFile(filepath1,options);  
Bitmap b1=ThumbnailUtils.extractThumbnail(bmp1,30, 30);  
iv1.setImageBitmap(b);  
 if(bmp1!=null){  
   bmp1.recycle();
   }  
         bmp1=BitmapFactory.decodeFile(filepath1,options);
 Bitmap b2=ThumbnailUtils.extractThumbnail(bmp1,30, 30);  
 iv2.setImageBitmap(b2);  
if(bmp1!=null){  
 bmp1.recycle();
 }

类似地,我将其用于四个图像视图并设置了没有OOM异常的图像

创建一个BitmapFactory.Options并在inSampleSize中传递一个大于1的值(最好是2的幂)以在加载图像时缩小图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM