导航:首页 > 文件处理 > androidbitmap压缩大小

androidbitmap压缩大小

发布时间:2025-07-04 05:35:29

android加载大图片的时候如何防止内存溢出

【答案】:android系统给图片分配的内存只有8M,当加载大量图片时往往会出现OOM。
Android加载大量图片内存溢出解决方案:
1)尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存,可以通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source
2)使用BitmapFactory.Options对图片进行压缩
InputStream is = this.getResources().openRawResource(R.drawable.pic1);
BitmapFactory.Options ptions=new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = 10; //width,hight设为原来的十分一
Bitmap btp =BitmapFactory.decodeStream(is,null,options);
3)运用Java软引用,进行图片缓存,将需要经常加载的图片放进缓存里,避免反复加载
及时销毁不再使用的Bitmap对象
if(!bmp.isRecycle() ){
bmp.recycle() //回收图片所占的内存
system.gc() //提醒系统及时回收
}

Ⅱ android开发,上传图片时,怎样自动压缩成800x600的尺寸求指教~~

protected Bitmap scaleImg(Bitmap bm, int newWidth, int newHeight) {
// 图森蚂纤片源
// Bitmap bm = BitmapFactory.decodeStream(getResources()
// .openRawResource(id));
// 获得图片的宽高
int width = bm.getWidth();
int height = bm.getHeight();
// 设置想要的物贺大小
int newWidth1 = newWidth;
int newHeight1 = newHeight;
// 计算缩放比此仿例
float scaleWidth = ((float) newWidth1) / width;
float scaleHeight = ((float) newHeight1) / height;
// 取得想要缩放的matrix参数
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
// 得到新的图片
Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix,
true);
return newbm;

}
你可以试下,如果不行,建议你还是先压缩在上传。

Ⅲ 性能优化:Android中Bitmap内存大小优化的几种常见方式

在Android中,优化Bitmap内存大小的常见方式有以下几种:

  1. 采样率压缩

    • 方法:通过改变采样率来缩小Bitmap的宽高,从而降低内存需求。
    • 适用场景:适用于原有图片宽高过大、目标尺寸较小的情况。
    • 效果:例如,将原图大小缩小至1/4,内存占用相应减少至原来的1/16。
  2. 矩阵压缩

    • 方法:使用Bitmap.createBitmap或Bitmap.createScaledBitmap方法进行缩放。
    • 适用场景:适用于原图大小和目标Bitmap尺寸已知的情况。
    • 效果:内存占用可以减少至原图的1/100左右。
  3. 更改配置

    • 方法:将默认的Bitmap.Config.ARGB_8888改为占用字节更少的配置,如ARGB_4444或RGB_565。
    • 适用场景:适用于对图像分辨率要求不高,且对图像透明度要求不高的场景。
    • 效果:可以有效减少Bitmap的内存占用。
  4. 质量压缩

    • 方法:通过Bitmap.compress方法调整quality参数来减小生成的字节流大小。
    • 注意:此方法不影响Bitmap在内存中的占用,但会减小生成的图片文件的字节大小。
    • 适用场景:适用于需要传递二进制图片数据的场景,如社交媒体分享。
    • 效果:可以在保持图像质量的同时,减小图像的位深、透明度等。

在实际开发中,应根据具体需求选择合适的优化策略,以提升应用的性能和响应速度,并有效避免内存溢出问题。

Ⅳ 性能优化:Android中Bitmap内存大小优化的几种常见方式

Android中优化Bitmap内存大小是提升应用性能的关键步骤。Bitmap占用内存大小的计算遵循其配置(Bitmap.Config)和大小。默认配置下,每个像素占用4字节。因此,优化主要通过调整宽度、高度或配置来减少内存消耗。

优化策略包括:

1. **采样率压缩**:通过改变采样率来缩小Bitmap大小,以此降低内存需求。例如,将原图大小从640px * 360px缩小至1/4,内存占用相应减少至原来的1/16。该方法适用于原有图片宽高过大、目标尺寸较小的情况,避免了不必要的内存浪费。

2. **矩阵压缩**:使用Bitmap.createBitmap或Bitmap.createScaledBitmap方法进行缩放。设定缩放比例后,内存占用减少至原图的1/100。适用于原图大小和目标Bitmap尺寸已知的情况。

3. **更改配置**:将默认的Bitmap.Config.ARGB_8888改为占用字节更少的配置,如ARGB_4444或RGB_565。对于非透明度要求高的图像,使用RGB_565更为合适。此方法适用于对图像分辨率要求不高的场景。

4. **质量压缩**:通过Bitmap.compress方法调整quality参数来减小生成的字节流大小,而不影响Bitmap内存占用。此方法在保持图像质量的同时,减小了图像的位深、透明度等,适用于需要传递二进制图片数据的场景,如微信分享。

在实际开发中,应根据具体需求选择合适的优化策略。优化Bitmap内存大小不仅能够提升应用的性能和响应速度,还能有效避免内存溢出问题。

阅读全文

与androidbitmap压缩大小相关的资料

热点内容
编译器是终端吗 浏览:521
pdf改b4 浏览:377
命令通道 浏览:690
pdf去 浏览:541
嵌入式编译器优化 浏览:125
不同品牌安卓一键换机用什么软件 浏览:955
二年下册运算法则 浏览:135
兰溪两级压缩空压机 浏览:137
网页如何取回服务器上的文件 浏览:96
linuxphp重启命令行 浏览:575
为什么我的所有app都登录不了 浏览:555
别样app海淘怎么样 浏览:512
联通app扣费是什么意思 浏览:383
android应用程序管理员权限 浏览:85
石家庄十万程序员 浏览:974
java继承类实例 浏览:289
疫情期间程序员的工资 浏览:30
最好的python编译器 浏览:189
安卓手机如何调分屏 浏览:731
安卓系统蓝牙耳机如何用 浏览:721