2017-09-08 3 views
0

La vue de connexion dans notre application utilise de grandes images de fond. Pour essayer et économiser sur la mémoire/taille de l'application, j'ai redimensionné et compressé ces images, ce qui réduit leur taille de fichier de manière significative (moins de 1 Mo, en baisse de plusieurs mb).Les grands jpeg utilisent plus de mémoire que les jpeg plus petits lorsqu'ils sont chargés dans un UIImageView. Pourquoi?

Lors de la surveillance de l'utilisation de la mémoire de mes applications (débogueur XCode), un pic est visible lorsqu'une image modifiée est affichée (environ 30-40 Mo). J'avais accepté cela comme normal et j'ai simplement veillé à libérer l'image dès que possible pour limiter l'utilisation de la mémoire.

J'ai récemment commencé à remplacer quelques images et je voulais en avoir un aperçu avant de les redimensionner/les compresser. J'ai remarqué que ces images (dont 11 Mo sur le disque et 4640x3472 pixels) n'ont aucun effet visible sur l'utilisation de la mémoire de l'application, augmentant plutôt «Other Processes» (d'environ 20-30mb).

Quelqu'un peut-il expliquer ce qui se passe ici? Je veux confirmer qu'il est conseillé de continuer à redimensionner/compresser les images.

Notez que je charge les images en utilisant UIImage(contentsOfFile:) et j'ai redimensionné/compressé les images en utilisant GIMP. Les nouvelles images ont été prises directement à partir de Flickr et non modifiées.

Cheers.

+0

Quelles sont les dimensions des images? Vous donnez les dimensions pour le grand fichier mais pas le petit. – user3344003

+0

@ user3344003 désolé pour le délai de réponse. Le plus petit fichier a des dimensions de 3788x2532. L'appareil sur lequel je travaille est un iPad Mini 4ème génération –

Répondre

2

taille en mémoire de l'image (en tant que UIImage) est différente de la taille compressée sur le disque (votre JPEG)

Le UIImage prend 4 octets (RVBA) par hauteur pixel x x avec - si pour une image 4640 x 3472, vous regardez 64,440,320 octets - tout à fait différent des 11 Mo sur le disque

+0

Je comprends que le fichier sur le disque n'est pas égal à la mémoire réelle nécessaire pour le rendre dans l'application. Je suis confus par la différence de comportement de mémoire entre un petit (jpeg 500kb) et le grand (11mb) celui que vous mentionnez. En particulier, le plus petit fichier semble utiliser plus de mémoire d'application que le fichier volumineux, ce qui, à première vue, semble étrange. Les fichiers plus petits semblent également contribuer directement à l'empreinte de la mémoire des applications, tandis que les fichiers plus volumineux semblent être manipulés ailleurs par le système d'exploitation. –