【发布时间】:2015-11-30 18:20:26
【问题描述】:
我正在尝试通过以下方式查看各种压缩质量的结果:
private static Bitmap codec(Bitmap src, Bitmap.CompressFormat format,
int quality) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
src.compress(format, quality, os);
byte[] array = os.toByteArray();
return BitmapFactory.decodeByteArray(array, 0, array.length);
}
我有一个名为bitmap 的位图,我将它与压缩版本进行比较:
Bitmap compressed = codec(bitmap,Bitmap.CompressFormat.JPEG ,10);
Log.d("result","bitmap=" + bitmap.getByteCount() + " compressed=" + compressed.getByteCount());
无论我选择将哪张照片加载到bitmap,压缩版本的字节数与位图的字节数相同——不过,如果我将compressed 加载到ImageView,质量会明显降低。
在降低图像视觉质量的同时,尺寸真的保持不变吗?我是否错误地获取了文件的大小?
编辑:
更奇怪的是,在图库详细信息中显示1.04mb 的图像的结果大小显示16343040 字节。
我通过onActivityResult 获取原始bitmap 使用:
InputStream is = getContentResolver().openInputStream(selectedImageUri);
bitmap = BitmapFactory.decodeStream(is);
is.close();
其中selectedImageUri 来自getData() 或从设备存储中选择的文件。
【问题讨论】:
-
位图没有压缩版本。解码数组或流后,您就可以解压缩/解压缩数据。由于位图与原始位图具有相同的分辨率,因此它需要相同数量的内存字节。 '结果大小显示 16343040 字节的图像,在画廊详细信息中显示 1.04mb。'。您可以像 16.343.040 一样友好地写下它,这并不奇怪。 jpg 比位图需要更少的字节数。
标签: java android android-bitmap image-compression