Charger une image thumnail

yodarkyodark Membre
20:47 modifié dans API UIKit #1
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...

Réponses

  • DrakenDraken Membre
    20:47 modifié #2
    Etant novice sur iPhone je ne connaà®t pas encore très bien les fonctions graphiques, alors ma réponse n'est pas certaine a 100%.

    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.


  • AliGatorAliGator Membre, Modérateur
    20:47 modifié #3
    dans 1243676884:
    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.
    C'est un post à  moi et tu le trouveras est ici.
  • yodarkyodark Membre
    20:47 modifié #4
    Merci ce code marche vraiment bien !

    Par contre j'ai essayé de l'appliquer à  l'image d'un boutton mais ca ne fonctionne pas

    [monBtn setImage:[[UIImage imageNamed:@"201.png"] resizedImageToFitInSize:monBtn.bounds.size scaleIfSmaller:NO] forState:0];
    
  • AliGatorAliGator Membre, Modérateur
    20:47 modifié #5
    Qu'entends-tu par "ça 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.
  • DrakenDraken Membre
    20:47 modifié #6
    Je viens de tomber sur un blog traitant de la réduction de taille des images.

    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.


  • yodarkyodark Membre
    juin 2009 modifié #7
    @draken
    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 !

  • yodarkyodark Membre
    20:47 modifié #8
    Pas d'idée ali ?
  • AliGatorAliGator Membre, Modérateur
    20:47 modifié #9
    Pas plus que ça et là  j'ai pas le temps...
    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.
Connectez-vous ou Inscrivez-vous pour répondre.