2009-08-08 8 views
1

je demande, dans lequelimage DOWNSIZE de l'iPhone lors du téléchargement

L'utilisateur sélectionne une image de l'iPhone, pour le champ photo,

image est téléchargé sur le serveur,

Taille de l'image peut être de 1 kb, ou 10 kb ou il peut être 1 mb ou 10 mb.

Si la taille de l'image est supérieure à 5mb, l'image doit être réduite jusqu'à 5mb avant de la stocker sur le serveur.La question est: comment? Est-ce possible?

i ai utilisé code ci-dessous pour télécharger l'image - pour la compression de l'image pendant le chargement,
imageDatafromPhoto = UIImageJPEGRepresentation ([info objectForKey: @ "UIImagePickerControllerOriginalImage"], 0,2);

Merci de votre aide.

Répondre

1

Il y a une différence entre «compression» et «rééchantillonnage». La compression est un moyen sans perte de réduire la taille d'un document, tel que GZip. Bien qu'il n'y ait pas d'interfaces standard dans Objective-C pour vous aider à le faire, il existe quelques extensions pour NSData en tant que catégorie que vous pouvez utiliser pour ajouter une compression GZip.

Cependant, cela en soi ne vous aidera pas. Les images JPEG ont tendance à ne pas bien se comprimer, ce que vous voulez vraiment, c'est rééchantillonnage ou le réglage de l'image elle-même. Cela jette quelques données, ce qui le rend plus petit mais aussi de qualité inférieure. C'est le but du 0.2 à la fin de celui-ci - 0.0 est la compression maximale que vous pouvez sortir de la bibliothèque. Vous pouvez essayer de l'appeler avec des nombres successivement petits (disons dans une boucle for) jusqu'à ce que vous obteniez une taille d'image de qualité acceptable. A défaut, vous devrez redimensionner en plaçant l'image dans un CGContextDrawImage avec une taille spécifiée dans un tampon CG (à partir de CGBitmapContextCreate), puis extraire la nouvelle image du résultat et recommencer.

Questions connexes