Qualité d'image
UniX
Membre
Salut.
J'ai une question concernant les images. Je créé des vignettes d'images de grandes dimensions en utilisant la méthode setSize: de NSImage. J'obtiens effectivement mes vignettes, mais la qualité d'image n'est pas très bonne ...
Voici 2 vignettes. La première créée avec la méthode setSize:, la seconde avec Photoshop. L'image source est la même. On voit bien la différence entre les 2 ...
Comment puis-je faire pour obtenir des vignettes de qualité ?
J'ai une question concernant les images. Je créé des vignettes d'images de grandes dimensions en utilisant la méthode setSize: de NSImage. J'obtiens effectivement mes vignettes, mais la qualité d'image n'est pas très bonne ...
Voici 2 vignettes. La première créée avec la méthode setSize:, la seconde avec Photoshop. L'image source est la même. On voit bien la différence entre les 2 ...
Comment puis-je faire pour obtenir des vignettes de qualité ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il va falloir que je trouve autre chose ....
avec un [tt]drawInRect: fromRect: operation:[/tt], genre (et lockFocus/unlockFocus sur l'image destination pour entourer le drawInRect et que ça dessine bien sur le contexte de l'image miniature)
Je ne sais pas du tout si ça donne la même chose qu'un setSize ou si ça donnera une meilleure qualité (ou une moins bonne ) mais c'est à tester pour voir la différence en tout cas.
(attention, ne marche que pour les images jpeg)
Pour avoir testé -> ça donne la même chose
(NB : il crée un handle pour pouvoir l'utiliser comme icône sur un fichier aussi...)
La partie du haut serait à arranger un peu pour dessiner directement dans un NSBitmapImageRep (un lockFocus sur une NSImage détruit les anciens ImageRep et crée un NSCachedImageRep sur lequel on ne peut rien faire...), mais là , j'ai la flemme pour l'instant :P
Effectivement, ça donne la même chose. J'ai rajouté la ligne suivante, mais c'est pas mieux ...
Je vais regarder ton code schlum.
Si tu veux gérer pour n'importe quelle taille d'image originale et de vignette, va y avoir un peu d'adaptation à faire...
(déjà gérer deux rapports : un d'abscisse et un d'ordonnée...)
Tu peux zapper tout le début, si tu as ton image toute faite, et commencer par "NSBitmapImageRep *imr1 = [NSBitmapImageRep imageRepWithData:[myImage TIFFRepresentation]];" (et même zapper ça si il y a déjà un NSBitmapImageRep dans l'image).
Voici ce le bout de code que j'utilise pour mes besoins...
On passe en paramètre la NSImage d'origine et le facteur de réduction que l'on souhaite obtenir.
Par contre, je fais le grab avec bitmapImageRepForCachingDisplayInRect et cacheDisplayInRect qui sont "Tiger only". On peut contourner le problème de compatibilité avec une capture pdf mais c'est moins performant de mémoire (voir intervention de Chacha sur ce post: http://www.objective-cocoa.org/forum/index.php/topic,2105.0.html ).
Edit: après relecture du post précité, le drawRect proposé par schlum doit être plus adapté que la capture pdf.