【发布时间】:2018-04-25 07:54:16
【问题描述】:
在我的项目中,有时我需要将一些图像(1-10)上传到服务器。大小从1M到10M不等。上传前,每张图片应压缩到
public static byte[] compressImageA(Bitmap image, int maxSize) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int options = 100;
image.compress(Bitmap.CompressFormat.JPEG, options, baos);
while (baos.size() / 1024 > maxSize) {
baos.reset();
options -= 10;
image.compress(Bitmap.CompressFormat.JPEG, options, baos);
}
if (image != null && !image.isRecycled()) {
try {
image.recycle();
} catch (Exception e) {
}
}
return baos.toByteArray();
}
这个方法可以,但速度不够快。例如,压缩10张图片大约需要25秒。(每张的大小在1M到10M之间)。经过一些测试,我发现Bitmap.compress()可能会被调用很多次并且在压缩过程中花费的时间最多。那么我该怎么做才能让它更快呢?我希望Bitmap.compress()在每次压缩过程中只被调用一次。或者有没有其他方法可以更快地将图像压缩到指定的大小?
【问题讨论】:
-
你找到解决办法了吗?
-
@PPV 不幸的是。不。