图像压缩在不同的OS上提供不同的大小?

时间:2013-10-14 10:54:22

标签: java android

我正在从相机和onActivityResult()捕获图像。我将图像重新缩放到800 x 600以及70%的压缩系数。在我这样做的同时,我会针对相同的相机分辨率获得不同的图像尺寸。

Bitmap pic = BitmapFactory.decodeFile(myPath);
Bitmap bitmap = Bitmap.createScaledBitmap(pic, 800, 600, true);
OutputStream os = null;
File file = new File("MyFile.png");

try {
    os = new FileOutputStream(file);
    bitmap.compress(Bitmap.CompressFormat.JPEG,70,outputStream);
    os.flush();
    os.close();
    pic = null;

}catch (IOException e){ 
...
}

下面的数据是两个案例中的5 MP,但不同的设备有不同的Android版本。 我得到的输出是:

在GingerBread(2.3.3)上,保存到SD卡的图像大小为130 KB。

在JellyBean(4.2)上,保存到SDCard的图像大小为59.3 KB。

1 个答案:

答案 0 :(得分:0)

当我在压缩和保存导致不同Android操作系统上不同大小的文件时保存从资源加载的位图时,我也观察到了同样的事情。这个问题与问题中的问题略有不同,但可能会提供一些见解。

“也许你从资源中获取位图,在这种情况下,位图尺寸将取决于手机屏幕密度”。推理是对以下问题的回答的一部分:

How to make Bitmap compress without change the bitmap size?