Android .png和.jpg图片用什么样的方式不会造成内存溢出
压缩图片,没有方式,只是文件大小问题
https://blog.csdn.net/qq_34902522/article/details/78654170
在源头上控制图片的大小 就是在服务器上控制图片大小 你获取到的图片就是处理过的 比较小的 还有就是自己拿到网络图片之后 感觉还是大的话 就自己做压缩吧
用glide就可以,它会自动压缩图片,不会造成内存浪费
自己压缩呗,自己控制图片大小的,如果不压缩,图片太大了什么格式都会内存溢出的
不是格式的问题,主要是内存太大导致的内存溢出,自己压缩图片,确保内存不溢出。
压缩方法:
/**
* 压缩图片(质量压缩)
*
* @param bitmap bitmap
*/
public File compressImage(Bitmap bitmap) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中
int options = 100;
while (baos.toByteArray().length / 1024 > 500) { //循环判断如果压缩后图片是否大于500kb,大于继续压缩
baos.reset();//重置baos即清空baos
options -= 80;//每次都压缩80%
bitmap.compress(Bitmap.CompressFormat.JPEG, options, baos);//这里压缩options%,把压缩后的数据存放到baos中
// long length = baos.toByteArray().length;
}
String filename = TimeUtil.longToDate(System.currentTimeMillis());
File file = new File(cropIconDir, filename + ".png");
try {
FileOutputStream fos = new FileOutputStream(file);
try {
fos.write(baos.toByteArray());
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
recycleBitmap(bitmap);
return file;
}
望采纳!
压缩图片,或者裁剪图片大小,jpg支持图片压缩,png不行,只能裁剪图片大小