2009-12-05 53 views
4

我在與相機拍攝的相同圖像的Documents目錄中有兩個文件。一個使用UIImagePNGRepresentation保存,另一個使用UIImageJPEGRepresentation保存。換句話說,一個是png,另一個是jpg。用PNG和JPG格式的UIImage內存使用情況

現在,使用該儀器與一個真正的設備。如果我加載png(initWithContentOfFile :),「真實內存」從2.34 MB變爲2.43 MB。但如果我加載jpeg,內存從2.34 MB變爲23 MB以上!我有類似的結果加載任何png與jpeg。

有人可以幫我理解爲什麼嗎?

+0

在相關說明中,我發現繪製PNG比iPhone上的JPG效率更高。例如,在將圖像繪製到單元格中的滾動表格視圖中,包含JPG的繪圖圖像使滾動波濤洶涌,不響應。簡單地切換到PNG使滾動順暢和響應。 – 2009-12-06 00:07:00

回答

4

它可能能夠將用於PNG文件的內存直接映射到存儲器,但它無法使用必須解碼的JPG來完成此操作。

如果你想一想,對於來自iPhone相機的1600x1200圖像,23 MB是非常現實的,而.09 MB沒有足夠的空間容納圖像的數據。

+0

PNG是一種可以進行無損壓縮的格式。因此,它也必須被解碼。 – Yoshi 2009-12-06 14:49:26

+2

但是,您可以或多或少地「解決」解壓縮。使用JPG時,您幾乎必須將整個內容加載到內存中,並且從計算上來說,在飛行中這樣做並不實際。 – 2009-12-07 02:07:57

0

對於顏色字節與iPhone顯示屏上的彩色條紋順序相同的png文件,Apple有一種特殊的非標準格式。 Png圖像當Xcode複製到應用程序包時,資源被重寫。我懷疑,當在iPhone上用作圖像時,png表示是特殊的。

+1

雖然PNGRepresentation方法並未使用該壓縮技術,或者沒有其他人能夠讀取文件! – 2009-12-07 02:09:08