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 674 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

le_sonic
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
Kian_ix
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 !!!!
gf18
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);
cs_rainiou
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 ;)
cs_rainiou
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)?

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.