2009-12-05 6 views
4

J'ai deux fichiers dans le répertoire Documents de la même image pris avec l'appareil photo. L'un a été enregistré en utilisant UIImagePNGRepresentation et l'autre en utilisant UIImageJPEGRepresentation. En d'autres termes, l'un est un png et l'autre est un jpg.Utilisation de la mémoire UIImage avec png et jpg

Maintenant, en utilisant l'instrument avec un périphérique réel. si je charge le png (initWithContentOfFile :), la 'Real memory' va de 2.34 MB à 2.43 MB. Mais si je charge plutôt le jpeg, la mémoire va de 2,34 Mo à plus de 23 Mo !!! J'ai eu des résultats similaires en chargeant n'importe quel png contre jpeg. Est-ce que quelqu'un peut m'aider à comprendre pourquoi?

+0

Sur une note connexe, j'ai trouvé que le dessin PNG est beaucoup plus efficace que les JPG sur l'iPhone. Par exemple, dans une vue de table déroulante qui dessine des images dans ses cellules, le dessin d'images contenant des images JPG rendait le défilement instable et ne répondait pas. Le simple passage aux fichiers PNG a rendu le défilement fluide et réactif. –

Répondre

4

Il est probablement possible de mapper la mémoire utilisée pour le fichier PNG directement sur le stockage, alors qu'il n'a pas la possibilité de le faire avec un fichier JPG qui doit être décodé.

Si vous y pensez, pour une image 1600x1200 de l'appareil photo de l'iPhone, 23 Mo est très réaliste alors que .09 Mo n'est pas assez d'espace pour contenir les données d'une image.

+0

PNG est un format qui effectue une compression sans perte. Ainsi, il doit également être décodé. – Yoshi

+2

Mais vous pouvez faire la décompression plus ou moins "en place". Avec JPG, vous devez pratiquement tout charger en mémoire et, en termes de calculs, ce n'est pas vraiment pratique de le faire à la volée. –

0

Apple a un format spécial non standard pour les fichiers png où les octets de couleur sont dans le même ordre que les bandes de couleur sur l'écran de l'iPhone. Images Png Les ressources sont réécrites lorsqu'elles sont copiées dans l'ensemble d'applications par Xcode. Je soupçonne que les représentations png sont spéciales cased lorsqu'il est utilisé comme des images sur l'iPhone.

+1

La méthode PNGRepresentation n'utilise cependant pas cette technique de compression, ou rien d'autre ne serait capable de lire les fichiers! –

Questions connexes