Charger une image thumnail
Bonjour à tous,
Je me souviens avoir vu quelque part un code permettant de charger un image au format miniature mais je n'arrive plus à mettre le le retrouver.
Comment faire pour charger une miniature de l'image en mémoire et pas l'image complète ?
Je voudrais afficher une mozaique d'images miniatures... Le problème et que si je charge l'image grand format que je spécifie une taille, le device sature vite en mémoire...
Je me souviens avoir vu quelque part un code permettant de charger un image au format miniature mais je n'arrive plus à mettre le le retrouver.
Comment faire pour charger une miniature de l'image en mémoire et pas l'image complète ?
Je voudrais afficher une mozaique d'images miniatures... Le problème et que si je charge l'image grand format que je spécifie une taille, le device sature vite en mémoire...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Pour ma part, je ferais les choses suivantes :
- charger l'image complète en mémoire
- création en mémoire d'une image vide de la taille de la réduction
- Utilisation d'une fonction de copie bitmap pour transférer l'image complète vers l'image vide.
Sous Windows, il y a une fonction bitblt() permettant de copier un bloc de pixels d'une image à une autre, en précisant la taille du rectangle d'origine et du rectangle de destination.
Pour réduire la taille d'une image, il suffit d'avoir un rectangle de destination plus petit. Exemple, une image de 480x320 pixels peut être transféré dans un rectangle de 120x80 pixels.
Je présume qu'il doit y avoir l'équivalent de bitblt() sur l'iPhone, voire mieux.
Ne pas oublier une chose importante : DETRUIRE l'image compléte après fabrication d'une image réduite. Cela ne sert à rien d'encombrer la mémoire avec des éléments graphiques inutiles, surtout s'ils prennent beaucoup de place.
Je rédige ce texte from scratch. Si j'ai le temps la semaine prochaine, je tâcherais de consulter la documentation de Quartz 2D et d'écrire un code de réduction opérationnel sur iPhone.
Par contre j'ai essayé de l'appliquer à l'image d'un boutton mais ca ne fonctionne pas
Ca crash ?
Ca te fait une image qui est déformée ou ne correspond pas à ce que tu attends ?
L'image est trop petite ? trop grande ?
Ca ne change pas sa taille, du moins en apparence ? --> attention si c'est ça à voir ce que tu as coché dans ton UIButton, je me demande si la classe UIButton n'effectue pas elle-même des opérations de rescale, ce qui fait que si ça se trouve avec mon code tu demandes de créer une image de taille plus petite, mais la UIImage ensuite avec ton setImage utilise cette image plus petite... mais l'affiche en l'agrandissant ?
Enfin je sais pas, sans plus d'infos je vois pas comment t'aider.
http://webd.fr/320-redimensionner-une-uiimage
Bon, ça fait double emploi avec le post d'AliGator, mais c'est toujours intéressant d'avoir plusieurs sources sur le même problème.
Merci pour le lien je le bookmark,
@Ali
Pardon c'est vrai que je n'ai pas été très précis Par ca ne marche pas je voulais dire que l'image n'est pas chargée dans le bouton comme quand le fichier est inexistant !
Mais met des NSLog sur ton image thumbnailisée, sur ses dimensions, etc... pour voir ce que ça donne, et met cette image thumbnailisée dans une UIImageView voir si elle s'affiche... enfin fait des tests avant de la mettre comme image de ton bouton, quoi.