Obtenit un hbitmap a partir d un jpeg gif bmp sans les mfc

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 815 fois - Téléchargée 38 fois

Contenu du snippet

Ben ya tout dans le titre. Ca permet de charger un fichier image bmp,gif ou jpeg et d obtenir directement son HBITMAP !!!
Ce code n'est pas de moi mais je l'ai trouvé tellement simple et puissant que je trouve bizarre que des personnes demandent encore comment charger des *.gif ou des *.jpeg
Trouvé sur http://www.codeguru.com/Cpp/G-M/bitmap/article.php/c4935/ mais c celui ki se trouve dans les post qui marche le mieux !!!

Source / Exemple :


#include <olectl.h>
#include <ole2.h>

HBITMAP LoadAnImage(char* FileName)
{
    WCHAR wpath[MAX_PATH];
    MultiByteToWideChar(CP_ACP, 0, FileName, -1, wpath, MAX_PATH);

    IPicture* pPic;
    OleLoadPicturePath(wpath, NULL, NULL, NULL, IID_IPicture,(LPVOID*)&pPic);

HBITMAP hPic = NULL;
    pPic->get_Handle((UINT*)&hPic);

    HBITMAP hPicRet = (HBITMAP)CopyImage(hPic, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG);

    pPic->Release();
    return hPicRet;
}

A voir également

Ajouter un commentaire

Commentaires

Messages postés
7
Date d'inscription
lundi 3 octobre 2005
Statut
Membre
Dernière intervention
18 février 2011

Personnellement, je n'ai pas de plantage,

mais aucune image ne s'affiche dans mon CControl...
Quelqu'un aurait une piste ?

Merci
Messages postés
26
Date d'inscription
dimanche 18 février 2007
Statut
Membre
Dernière intervention
5 avril 2009

pile ce qu'il me failait merci ^^
plus besoin de se faire chier avec ce CreateCompatibleBitmap de mrd !!!!
Messages postés
11
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
9 juillet 2008

Dans le cas d'un .bmp , la simple fonction suivante suffit :

HBITMAP hvar = (HBITMAP) LoadImage(NULL,"C:\path\fichier.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
Messages postés
6
Date d'inscription
lundi 31 octobre 2005
Statut
Membre
Dernière intervention
24 juin 2007

bon voila, apres quelques rechercher j'ai trouvé cette librairie :

http://members.cox.net/scottheiman/bmglib.htm

elle est tres bien ! elle recupere un HBITMAP a partir de differents types (et bien d'autrs fonctions sur les images) assez bien :

HBITMAP hBitmap = CreateBitmapFromJPEGFile( "mon_image.JPG" );

voila qui devrait participer a la resolution des prblemes de types ;)
Messages postés
6
Date d'inscription
lundi 31 octobre 2005
Statut
Membre
Dernière intervention
24 juin 2007

Salut!
voila j'ai un petit soucis... je suis pas un pro de c++ et encore moins de VC. Je suis sous VC7 (.net) et j'ai un soucis en utilisant ce script:

je suis alle voir la msdn qui conseil d'ailleurs d'utilisez CoInitializeEx pour les nouveaux programmes, il y a un parametre de plus : http://msdn2.microsoft.com/en-us/library/ms695279.aspx

Donc je test le CoInitializeEx (et non ex), cela me renvoit un code de reussite... de meme pour la conversion du path, mais lors de la conversion de l'image ca plante.

J'ai lu qu'il y avait des problemes avec OleLoadPicturePath si l'image de type JP(E)G, BMP, GIF ne sont pas bien "structures" allez savoir pourquoi... en ce qui me concerne j'ai donc teste sur plusieurs images crees avec PAINT (me disant que de MS a MS ca devrait aller) en differents formats, et j'ai toujours une erreur.

Quelqu'un aurait il eu le meme probleme en utilisant ce script? si oui quelle solution avez vous mis en place?

Est ce que le fait de desactiver cette librairie : "libcmt.lib" joue un role, ou egalement le fait que je soit en Single Threaded (je penche plus pour cette raison)?
Afficher les 19 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.