2011-07-17 33 views
5

PhoneGap kullanarak bir iOS uygulamasında çalışıyorum. Bazı resimlerimin yüklenmediği can sıkıcı bir soruna rastladım. Düşünmek, görüntüleri değiştirerek oynadığım bir önbellek sorunuydu.Mobil safaride görüntü boyutu sınırlamaları?

Sonunda sorunun görüntümün yüksekliği ile ilgili olduğunu keşfettim. Bir sürü deneme ve hatadan sonra, iPad simülatöründe veya iPad'in kendisinde 7864 pikselden daha uzun bir resmin yüklenmeyeceğini keşfettim. Safari'de iyi yüklenecek. Dosya boyutu sınırlaması değil, bunlar yalnızca 45k boyutlarında ve başka hiçbir yerde sorun olmadan 700 kilogram boyutunda görüntüler yüklüyorum.

Bunu yapan var mı? Mobil Safari'de görüntü boyutlarında belgelenmiş kısıtlamalar bulamıyorum. Kısıtlamalar varsa, bunları bilmek kullanışlı olur.

+0

Opera Mini, Tam Res. –

cevap

5

Yerel uygulamalar için Apple, 2048x2048 1024x1024 are to be avoided'dan daha büyük olan resimlerin daha küçük boyutlara bölünmesi gerektiğini söylüyor. Buradaki sorun, diskteki dosya boyutu değil, bellekteki boyuttur: görüntünün kodu çözülmeli ve "düz" bir gösterime dönüştürülmelidir.

Biraz matematik yapalım: 8 bit RGB ile bir görüntüyü 5000x5000 piksele alınız.

5.000 * 5.000 * 3 = 75.000.000 (kabaca 71,5 MiB)

Yani görünüşte küçük resim gerçekten çok hızlı bellek doldurur bkz: Bu, her bir piksel 3 bayt işgal anlamına gelir. iOS artık bellek basıncı altındaysa parçaları parçalayamaz, tüm görüntü veya hiçbir şey değildir.

Tek çözümünüz, görüntüyü daha küçük parçalara ayırmaktır. iOS daha sonra, artık hafızada görünmeyen görüntüleri kaldırabilir (tüm parçaların her zaman görülebildiği kadar büyük bir görüntüden şüphe duyuyorum).

+0

Yerel UI oluşturmaya başvuruluyor gibi görünüyor. Mobil Safari için de bu doğru mu (PhoneGap)? Bu sınırlama ile çalışabilirim, fakat CSS'mde Sprite'ları kullanmayı bırakmam gerektiği anlamına geliyor - bu da başka bir yerde önerilen bir şey. Yani hala biraz karışıkım. ;) –

+0

Daha iyi bir şey bulamadığım için yerel uygulama belgelerini belirttim. Yine de sorun, ister yerel uygulamalar isterse de Safari ile olsun, aynıdır: devasa bir resim büyük miktarda bellek kaplar ve OS, parçaları parçalayamaz (AFAIK). Ancak, çok sayıda küçük resim içeren devasa bir resmi kirletirseniz, şu anda görünmeyen görselleri tasfiye etmek sorun olmaz. En azından Apple'ın söylediği şey, yerel geliştiricilerin bunu nasıl yapmamız gerektiği. – DarkDust

+0

, bu yüzden Wikipedia'nın 13.000 piksel panoramalarını yükleyemiyorum! – Ian

İlgili konular