begin process at 2012 05 30 16:04:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

redimensionnement image et qualité


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

redimensionnement image et qualité

dimanche 19 mars 2006 à 06:26:54 | redimensionnement image et qualité

mogwai93

Bonjour

j'utilise la fonction ci-dessous  (copiee sur ce forum) pour redimensionner des bitmaps
sauf que dans le cas de la reduction, l'image est de mauvaise qualité  (apparition de points, ligne...)
comment ameliorer la qualité ?

merci


HBITMAP ResizeBmp(HBITMAP hBmpSrc, SIZE newSize)
{
     // taille actuelle
     BITMAP bmpInfo;
     GetObject(hBmpSrc, sizeof(BITMAP), &bmpInfo);
     SIZE oldSize;
     oldSize.cx = bmpInfo.bmWidth;
     oldSize.cy = bmpInfo.bmHeight;

     // selection source ds un DC
     HDC hdc = GetDC(NULL);
     HDC hDCSrc = CreateCompatibleDC(hdc);
     HBITMAP hOldBmpSrc = (HBITMAP)SelectObject(hDCSrc, hBmpSrc);

     // création bitmap dest et sélection ds un DC
     HDC hDCDst = CreateCompatibleDC(hdc);
     HBITMAP hBmpDst = CreateCompatibleBitmap(hdc, newSize.cx, newSize.cy);
     HBITMAP hOldBmpDst = (HBITMAP)SelectObject(hDCDst, hBmpDst);

     // resize
     StretchBlt(hDCDst, 0, 0, newSize.cx, newSize.cy, hDCSrc, 0, 0, oldSize.cx, oldSize.cy, SRCCOPY);

     // libération ressources
     SelectObject(hDCSrc, hOldBmpSrc);
     SelectObject(hDCDst, hOldBmpDst);
     DeleteDC(hDCSrc);
     DeleteDC(hDCDst);
     ReleaseDC(NULL, hdc);

     return hBmpDst;
}
dimanche 19 mars 2006 à 10:21:39 | Re : redimensionnement image et qualité

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
Avant le StretchBlt: SetStretchBltMode(hDCDst, STRETCH_HALFTONE); Ta libération des ressources n'est pas duffisante, il faut aussi supprimer les bitmaps: DeleteObject(SelectObject(hDCSrc, hOldBmpSrc)); DeleteObject(SelectObject(hDCDst, hOldBmpDst)); C'est plus important de les libérer que les HDC car elle prennent beaucoup plus de mémoire
dimanche 19 mars 2006 à 10:46:21 | Re : redimensionnement image et qualité

mogwai93

merci,  ca fonctionne sans pb :-)

et merci pour la memoire
j'oublie souvent d'en liberer
faut que j'y pense +

dimanche 19 mars 2006 à 10:49:54 | Re : redimensionnement image et qualité

vecchio56

Administrateur CodeS-SourceS
Pour vérifier si tu n'oublies rien: gestionnaire des tâches
dimanche 19 mars 2006 à 22:52:19 | Re : redimensionnement image et qualité

MuPuF

pas trés précis le gestionnaire des taches ...
dimanche 19 mars 2006 à 22:54:00 | Re : redimensionnement image et qualité

vecchio56

Administrateur CodeS-SourceS
Si, tu peux connaitre le nombre d'objets GDI alloués par un processus


Cette discussion est classée dans : hdc, hbitmap, newsize, oldsize, hdcsrc


Répondre à ce message

Sujets en rapport avec ce message

Probleme capture d'ecran [ par SnOOpss ] Bonjour j'ai un probleme pour faire des capture d'ecran !! Voila quelques truc ke j'ai essayé. HBITMAP capturehdc(HDC hdcScreen,int longueur,int larg Lire le buffer de pixels a partir d'un HBITMAP [ par Kazuya ] Bonjour,j'ai un probleme pour passer un Bitmap en 32bpp,je charge le fichier en memoire (HBITMAP) et ensuite je tente de le modifier, mais le probleme Besoin de precision sur l'utilisation de la fonction pour redimensionner une image Bitmap [ par noetom ] Bonjour, j'ai besoin de redimmensionner une image Bmp et j'ai trouvé les sources pour le faire sur le site ici : http://www.cppfrance.com/code.aspx?i redimentionnement d'image, aidez-moi svp [ par sousou_one ] salut à tous,je veux construire une bitmap par copie d'une région d'une bitmap source, je dois prendre les nouvelles dimensions en sélectionnant la ré [api]Plusieurs images dans un dcMem, ou plusieurs dcMem [ par hoGan ] Bonjour à tous,j'aimerais pouvoir afficher plusieurs images l'une à la suite de l'autre en cliquant plusieurs fois sur un bouton. Voici la façon dont Rôle de CreateCompatibleBitmap(...) [ par julien_boss ] Bonjour, mon code est le suivant : # // création DC et bitmap en mémoire # HDC hMemDC = CreateCompatibleDC(hdc); # HBITMAP hMemBmp = CreateCompatibl HDC vers HBITMAP [ par julien_boss ] Bonjour,j'ai un DC, contenant un dessin..., je souhaite pouvoir transférer son contenu dans un bitmap de type HBITMAP, afin ensuite de la mettre dans setpixel couleur [ par abdoulax ] Bonjour,Je voudrais écrire dans ma fenêtre pixel par pixel. Pour cela je souhaite passer par une zone mémoire temporaire avant de la recopier (une foi redimensionnement bitmap et mémoire occupée [ par mogwai93 ] BonjourJ'ai une image bmp que je redimensionne avec StretchBlt pour qu'elle s'affiche dans la zone de mon choixor au niveau du gestionnaire des taches HDC -> HBITMAP [ par ndubien ] Bonjour,Comment convertir un HDC en HBITMAP?Merci d'avance et à bientôt... Nico


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales