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

0/5 (19 avis)

Snippet vu 11 415 fois - Téléchargée 41 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
le_sonic Messages postés 7 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 18 février 2011
18 févr. 2011 à 15:12
Personnellement, je n'ai pas de plantage,

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

Merci
Kian_ix Messages postés 26 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 5 avril 2009
17 déc. 2008 à 05:15
pile ce qu'il me failait merci ^^
plus besoin de se faire chier avec ce CreateCompatibleBitmap de mrd !!!!
gf18 Messages postés 11 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 9 juillet 2008
5 sept. 2008 à 19:45
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);
cs_rainiou Messages postés 6 Date d'inscription lundi 31 octobre 2005 Statut Membre Dernière intervention 24 juin 2007
24 juin 2007 à 19:33
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 ;)
cs_rainiou Messages postés 6 Date d'inscription lundi 31 octobre 2005 Statut Membre Dernière intervention 24 juin 2007
22 juin 2007 à 15:23
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)?

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.