2010-09-29 3 views
0

Je travaille sur un composant où je dois mettre à l'échelle et faire pivoter l'image. suivant est le flux du composantNiveau d'avertissement de la mémoire 1 dû à UIImage

Sélectionner l'image de la photothèque -> montrer cette image dans UIImageView -> faire la mise à l'échelle -> sauvegarder cette image dans le document.

Cela fonctionne très bien avec une image ayant une faible résolution.

mais une fois que je sélectionne l'image avec une résolution élevée, je reçois d'abord le niveau d'avertissement de mémoire 1. mais je ne peux pas libérer cette image, car j'ai besoin d'aller plus loin avec la même image. Je viens de savoir que l'image est déballée par (largeur * hauteur * 4), donc si je choisis l'image de 1800 * 1200 la mémoire consommée est de 8,6 Mo [également vérifié avec l'instrument].

Quelqu'un peut-il m'aider à résoudre ce problème? Cela crée 2 queues

  1. pouvons-nous utiliser des images avec une haute résolution?
  2. qu'en est-il de 2 UIImageview avec deux images haute résolution?

Merci,

Sagar

Répondre

0

Vous pouvez modifier votre commande des opérations un peu.

Sélectionnez l'image dans la bibliothèque de photos -> mettez à l'échelle l'image -> enregistrez l'image mise à l'échelle dans le répertoire Documents -> affichez l'image mise à l'échelle dans UIImageView.

La mise à l'échelle et l'enregistrement de l'image prennent du temps, votre utilisateur aura donc un peu de temps à attendre avant de voir l'image dans votre UIImageView. L'affichage d'un indicateur d'activité avec une option d'annulation est une bonne idée.

J'ai utilisé cette technique avec des images assez volumineuses et cela a fonctionné sur des périphériques plus anciens sans encourir d'avertissement de mémoire.

+0

En outre, soyez conscient des pools autorelease. Si ce n'est pas prudent, les objets peuvent rester plus longtemps que prévu. – rpetrich

+0

Merci Robot pour une réponse rapide, mais le protocole est l'utilisateur choisira d'abord l'image et si besoin est, il utilisera l'option échelle pour l'adapter à l'écran plein écran. tellement luttant avec ça. –

+0

Ce que vous entendez par "l'adapter à l'écran" n'est pas clair pour moi. Pourquoi ne pas utiliser la capacité du sélecteur d'images pour sélectionner une partie de l'image? Alternativement, si l'image est déjà beaucoup plus grande que "plein écran", sauvegardez une version réduite à la résolution de l'écran et utilisez-la. Il utilisera encore beaucoup moins de mémoire que l'original. –

Questions connexes