图像压缩在不同的操作系统上给出不同的大小?

问题描述:

我从相机捕获图像和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)保存到SDCard的图像大小是130 KB。

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

+7

可压缩性,因此生成的文件大小,取决于图像! –

+0

它不依赖于操作系统,它取决于该特定设备的摄像头。 – Riser

+0

@ ErnestFriedman-Hill是对的。想象一下,在一张纸上拍一张黑点的照片,这张照片可以非常严格地压缩,与分辨率或操作系统无关,因为照片中没有太多信息(变化,熵,不管)。 – arynaq

我还观察到当保存压缩和保存的资源时加载的位图导致同一事物在不同的Android OS上导致不同大小的文件。这个问题与问题中提出的问题有点不同,但可能会提供一些见解。

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

How to make Bitmap compress without change the bitmap size?