2011-07-17 153 views
5

我正在使用PhoneGap處理iOS應用程序。我遇到了一個惱人的問題,我的一些圖像沒有加載。我認爲這是一個緩存問題,我圍繞圖像交換。移動Safari瀏覽器中的圖像大小限制?

我終於發現問題與我的形象的高度有關。經過大量的試驗和錯誤之後,我發現高於7864px的圖像將不會加載到iPad模擬器或iPad本身中。它將在Safari中正常加載。這不是一個文件大小限制,因爲它們的大小隻有45k,我在其他地方加載的圖像大小爲700k,沒有問題。

有沒有人遇到過這個?我無法在移動Safari中找到任何有關圖像尺寸的文檔限制。如果有限制,知道它們會很方便。

+0

Opera Mini在Full Res顯示圖像。 – 2013-08-15 02:40:14

回答

5

對於本地應用程序,Apple表示圖片大於 2048x2048 1024x1024 are to be avoided,應該分解爲更小的圖片。這裏的問題不是磁盤上的文件大小,而是內存中的大小:圖像必須被解碼並變成「平面」表示。

所以我們來做一些數學運算:假設圖像爲5000x5000像素,帶有8位RGB。這意味着每個像素佔用3個字節:

5000 * 5000 * 3 = 75,000,000(約71.5兆),

所以你看你的看似很小的圖像確實填補了內存速度非常快。如果它受到內存壓力,iOS現在不能丟棄部分,這是整個圖像或沒有任何東西。

你唯一的解決辦法是將圖像分解成更小的部分。然後,iOS可以刪除內存中不再可見的圖像(我懷疑這樣一個巨大的圖像,以至於所有的部分都是可見的)。

+0

這似乎是指本地用戶界面渲染。這對移動Safari(PhoneGap)也適用嗎?我可以使用該限制,但意味着我需要停止在我的CSS中使用Sprites - 這是其他地方推薦的內容。所以我還是有點困惑。 ;) –

+0

我引用了原生應用程序文檔,因爲我沒有找到更好的東西。但是,無論是使用本地應用程序還是Safari,問題都是一樣的:巨大的圖片佔用大量內存,操作系統無法清除其中的部分內容(AFAIK)。但是,如果您用大量較小的圖像拼接一張巨大的圖像,清除那些目前不可見的圖像並不是問題。至少這就是蘋果所說的是我們的原生開發者應該這樣做。 – DarkDust

+0

所以這就是爲什麼我無法加載維基百科的13000像素全景! – Ian

相關問題