2010-10-15 8 views
0

Je développe une application de traitement d'image simple et j'ai rencontré un problème sur mon unité de test (iPhone 3G): généralement, toute image sur 1024x1024 pixels provoquera le blocage de l'application lors de l'enregistrement .Enregistrement d'images haute résolution dans un album photo

Procédé mon application suivante:

  1. utilisateur sélectionne une image via UIImagePicker

  2. Une copie de travail de l'image sélectionnée est créé et redimensionnée aux bornes de vue (par exemple 320x480) pour la performance.

  3. utilisateur fait leurs manipulations d'image sur la copie de travail et presses sauver

  4. Les mêmes manipulations sont effectuées sur l'image pleine résolution d'origine, puis enregistré à l'album photo. Si l'image est la région de 1024x1024 tout va bien, si elle est trop grande l'application plante sans avertissement de la mémoire.

Après la recherche par stackoverflow il semble qu'il y présente une recommandation d'Apple de ne pas dépasser 1024x1024, mais je l'ai trouvé que l'application PhotoShop Express sur le même iPhone 3G est capable d'enregistrer des images à leur haute origine résolution (par exemple 1534x2034).

Quelqu'un pourrait-il me donner quelques idées sur la façon d'enregistrer des images haute résolution sur l'album photo comme le permet PhotoShop Express?

Merci.

Répondre

1

Je pensais que je devais partager la façon dont je me suis déplacé en avant avec cette question ...

  1. Chargez l'image de photothèque. [imginfo objectForKey: @ "UIImagePickerControllerOriginalImage"];
  2. Redimensionnez une "copie de travail" à une taille qui correspond aux limites de la vue.
  3. Au moment de l'enregistrement, j'ai une méthode qui détermine quel appareil iOS de modèle fonctionne et renvoie cette résolution maximale pour une dimension. Pour iPhone 3G j'ai utilisé 1600px.
  4. L'image originale est chargée à nouveau (objectForKey: @ "UIImagePickerControllerOriginalImage"];) puis redimensionnée pour tenir dans les limites de 1600px (dans ce cas) tout en conservant le rapport d'aspect.

Pas idéal, mais au moins cela prévient le crash, et permet aux personnes ayant un matériel plus récent (par exemple 3G ou 4) d'économiser à des résolutions plus élevées.

1

Même s'il n'y a pas d'avertissement de mémoire, je suppose qu'il s'agit d'un problème de mémoire. Nous aurions besoin de plus d'informations sur votre accident pour être sûr. Comment l'enregistrez-vous? Utilisez-vous ALAssetsLibrary ou UIImageWriteToSavedPhotosAlbum? Notez que ce dernier a des méthodes qui fonctionnent avec CGImageRef ou NSData. Cela vaut la peine d'essayer toutes les méthodes applicables pour comparer.

Questions connexes