Comment réduire la résolution d'une UIImage dans IOS par la taille des Données

Je suis à la recherche pour convertir un UIImage dans iOS.

J'ai vu d'autres questions ci-dessous et leur approche sur la façon de réduire la taille de l'image par la taille.
Le Redimensionnement D'Images Objective-C
Comment redimensionner l'image par programmation en objective-c dans l'iphone
La façon la plus simple pour redimensionner une UIImage?

Ces questions sont toutes basées sur le changement de la taille de l'image à une taille spécifique. Dans mon cas, je suis à la recherche de re-taille/réduire la taille de l'image basée sur une taille maximale.

Comme un exemple, je voudrais mettre un maximum NSData taille de 500 KO. Je sais que je peux obtenir la taille de l'image comme ceci://Vérifier la taille de l'image renvoyée

NSData *imageData = UIImageJPEGRepresentation(image, 0.5);

//Log out the image size
NSLog(@"%lu KB",(imageData.length/1024));

Ce que j'aimerais faire, c'est une certaine forme de boucle ici. Si la taille est supérieure à la taille maximale que j'ai mis, je tiens à l'échelle de l'image légèrement, puis vérifier la taille. Si la taille est trop grande échelle vers le bas à nouveau légèrement, puis vérifier de nouveau, jusqu'à ce qu'il est inférieur au maximum de la taille de l'ensemble.

Je ne suis pas sûr de ce que la meilleure approche pour ce qui est. Idéalement, je ne veux pas l'échelle vers le bas de l'image à une taille précise, tout le temps, mais seulement légèrement vers le bas l'échelle de l'image à chaque fois. De cette façon, je peux avoir le plus grand (taille l/h) de l'image elle-même et à sa taille maximale (en octets). Si je échelle légèrement à la baisse qu'à une époque, quelle serait la meilleure façon d'accomplir cette?

MODIFIER
Pour confirmer, je suis à la recherche de re-taille de l'image réelle, mais ré-taille de l'image, de sorte qu'il est plus petit que le maximum de NSData Longueur.
Par exemple:
-Vérifier la NSData Longueur
-Si au-dessus du maximum que j'ai envie de passer à la UIImage dans une méthode
-Ensuite une boucle au travers de cette méthode légèrement re-dimensionnement de la taille réelle de l'image à chaque fois
-Jusqu'à ce qu'il est sous le maximum NSData longueur, puis retourner l'image?

Faites-vous cela pour optimiser le stockage persistant ou de la bande passante du réseau? (Dans ce cas, de jouer avec les options de compression JPEG est très bien.) Ou êtes-vous essayer de contrôler la quantité de mémoire est utilisée lorsque vous chargez les images dans UIImage objet? (Dans ce scénario, la compression JPEG options ne sont pas vraiment pertinents, tout résultant en la perte de la qualité de l'image sans affecter la quantité de mémoire utilisée.)
Je suis en train de faire ce pour des restrictions de téléchargement. Je voudrais à l'échelle de la taille de l'image, par opposition à la compression à maintenir la qualité de. Au moment de l'utilisation de la mémoire n'est pas un problème.
Ok, alors vous pouvez ne pas tenir compte de ma réponse, mais je vais l'y maintenir pour les futurs lecteurs.
La réponse ici: stackoverflow.com/q/20458558/2057171

OriginalL'auteur StuartM | 2013-12-05