5

Sto creando un'app universale. Per una schermata, visualizzo 6 immagini (formato png) in una griglia utilizzando il controllo this. Anche questo schermo supporta sia l'orientamento verticale che orizzontale.La dimensione dell'app è troppo grande a causa di troppe immagini

Ho creato un set di immagini in diverse risoluzioni per tutti gli iDevice e li ho denominati utilizzando la convenzione di denominazione corretta come segue.

E ho dovuto creare un altro set di queste immagini poiché supporto sia l'orientamento che non posso usare le stesse immagini di cui sopra perché in orizzontale si allungherebbe.

Ora ho quasi 60 immagini per solo per uno schermo e l'app pesa già ~ 40 MB! Va da sé che questo è inaccettabile.

La mia domanda è, è necessario creare immagini separate per tutte queste dimensioni/dispositivi e orientamenti? Non riesco a creare un set solo per il display retina e ridimensionato per le visualizzazioni normali? Se ciò non è possibile, c'è un modo per ridurre le dimensioni delle immagini?

Grazie.

+0

stesso problema sto affrontando ... –

+4

Prova http://tinypng.org/ per ridurre le dimensioni dell'immagine PNG. – Amar

+0

@Amar Grazie. Continuo a ritenere le immagini come la mia seconda opzione al momento. Perché creare così tante immagini è un compito noioso.Quindi se c'è un modo per ridurlo, sarei fantastico. In caso contrario, dovrò ricorrere al metodo di compressione. :) – Isuru

risposta

2

Non è obbligatorio, ma si dovrebbe fare o almeno in equilibrio con altri fattori. Il problema principale, se non lo fai, è legato alla memoria (RAM), le immagini più grandi occupano molto spazio in memoria e i dispositivi con una risoluzione inferiore hanno meno memoria di quelli della retina. Quindi restringere non è l'opzione migliore.
Una possibile soluzione sarebbe prendere una "grande" immagine che potrebbe essere ridimensionata anche per gli altri. Per fare ciò è necessario ridisegnare le immagini utilizzando Core Graphics o ImageIO, questa libreria potrebbe essere utile NYXImagesKit. Naturalmente c'è un prezzo da pagare:

  1. richiede tempo di elaborazione
  2. la fonte "grande immagine" deve essere aperto almeno una volta a fare il calcolo, se sei già a corto di memoria, potrebbe essere un problema

C'è un'altra soluzione per gli elementi della GUI (non solo), utilizzare un'immagine di vect PDF. È possibile trovare un articolo interessante here by Matt Gemmel
Se le immagini non utilizzano il canale alfa, andare con jpg !!!!

+0

Ehi Andrea, grazie per la risposta. Solo per testarlo, ho appena usato un set di immagini che ho creato per il display retina e l'ho eseguito sia nella retina che nei display normali. Nella schermata normale, utilizza le immagini retina e non vedo alcun problema o cambiamento. È difficile rilevare la differenza negli emulatori iPhone? Devo testarlo su dispositivi reali? – Isuru

+0

Beh, non ci sono cambiamenti importanti, se fornite un tipo di immagine per ciascuna risoluzione senza ridisegnarli, le immagini sono semplicemente stracciate. Poiché il simulatore ha lo stesso hardware del tuo Mac, non noterai anche problemi di memoria. Il problema potrebbe verificarsi in esecuzione su un dispositivo reale, su iPhone 3g o 3gs che caricano le immagini retina può riempire la RAM molto presto e in alcuni casi potrebbe portare a crash – Andrea

+0

I see. Grazie per tutte le informazioni. :) – Isuru

3

Non è necessario creare immagini per il display non retina e retina. È possibile utilizzare solo le "immagini retina" (se possibile, in formato JPG). Quando è necessario visualizzare le immagini di dimensioni più ridotte, è possibile utilizzare "aspect fit" per ridimensionare le immagini più grandi. Potrebbe esserci qualche compromesso qualitativo.

Analogamente, per le immagini di iPhone 5, è possibile ritagliare le immagini più lunghe utilizzando la proprietà ClipToBounds per ritagliare le parti indesiderate su schermi più piccoli.