2013-10-14 95 views
0

我從相機捕獲圖像和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

回答

0

我還觀察到當保存壓縮和保存的資源時加載的位圖導致同一事物在不同的Android OS上導致不同大小的文件。這個問題與問題中提出的問題有點不同,但可能會提供一些見解。

「也許你從資源中獲取位圖,在這種情況下,位圖維度將取決於手機屏幕密度」。其理由是以下問題的答案的一部分:

How to make Bitmap compress without change the bitmap size?

相關問題