IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[ATL - VC7]Redimensionnement d'image avec StretchBlt


Sujet :

MFC

  1. #1
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut [ATL - VC7]Redimensionnement d'image avec StretchBlt
    J'essaye de redimensionner une image en la recopiant via la fonction StretchBlt.
    Mais le problème est que lorsque je sauvegarde mon image en gif, celle ci est pixelisée.
    Comment éviter cela?

    Voici mon code actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
         CImage image;
         image.Create(thumb_width, thumb_height , 24);
          CImageDC imageDC(image);
    	::SetStretchBltMode(imageDC, HALFTONE) ; 	
    	::StretchBlt(imageDC,0,0,thumb_width, thumb_height ,hdcMem,0,0,screen_width,screen_height,SRCCOPY );
    	image.Save(m_fileName);
    (J'utilise VC++7 .)

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Un GIF ne fait que 256 couleurs, ce qui annule une bonne partie du lissage.

    Pour y rémédier, soit tu utilises un meilleur algorithme de réduction du nombre de couleurs (je ne sais pas s'il en existe des libres)...
    Soit tu enregistres en un autre format (PNG par exemple)

  3. #3
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut
    Pardon mais je ne comprends pas comment je dois changer d'algo de lissage... Je suis nouveaux en C++ et en ce qui concerne les algos de compressions d'images je ne suis pas trés au point non plus...
    Si je comprends bien avec seulement les fonctions GDI de base je ne pourrais jamais obtenir de gif de meilleur qualité ?

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    À mon avis, non.

    Le problème majeur, c'est que le GIF est un format d'image en 256 couleurs. Une image lissée en a généralement beaucoup plus.

    Pour enregistrer en GIF, les fonctions sont obligées de réduire le nombre de couleurs. Il existe plusieurs façons de le faire, et certains logiciels propriétaires ont de meilleurs algorithmes que d'autres:
    • Paint, super-nul : La version 98 te changeait des couleurs même si tu n'en utilisais que 4, les versions récentent te mettent obligatoirement du tramage
    • Micrografx PhotoMagic avait de bons algorithmes, mais ça ne se fait plus.
    • Pour GDI, ça dépend, l'algorithme utilisé est pas mal, mais apparament pas suffisant pour ce que tu veux faire.
    • Pour les programmes modernes, je n'ai pas testé.

    Il existe peut-être des bibliothèques libres permettant de réduire le nombre de couleurs d'une image avec le moins de perte de qualité possible. Mais si tu n'en trouves pas, alors le format GIF n'est pas fait pour toi : Il te faudra enregistrer ton image sous un autre format, comme le format PNG.

Discussions similaires

  1. Comment redimensionner une image avec GD ?
    Par pdtor dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 04/12/2009, 12h08
  2. Redimensionner une image avec getElementByID
    Par Gunner4902 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 14/08/2008, 17h47
  3. [GD] Redimensionner une image avec une taille fixe
    Par Aspic dans le forum Bibliothèques et frameworks
    Réponses: 29
    Dernier message: 20/07/2008, 14h57
  4. Problème de redimensionnement d'image avec CSS
    Par redvivi dans le forum Débuter
    Réponses: 4
    Dernier message: 24/03/2008, 11h28
  5. Recadrer || redimensionner des images avec javascript
    Par Alex Grenier dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/02/2008, 04h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo