begin process at 2012 05 29 04:53:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

fonction GetClipboardData()


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

fonction GetClipboardData()

mercredi 6 octobre 2004 à 10:31:47 | fonction GetClipboardData()

doggyk

Bonjour,
Je souhaite faire du traitement d'image à partir d'une webcam.
Je suis sur plusieurs pistes en même temps et certaines avancent bien (merci à magic_Nono , BruNews et DeAtHCrAsH).
Mais...

Je souhaite donc récupérer une image bmp à partir du clipboard pour la mettre dans un tableau. Je fais donc:
HANDLE HWnd;
OpenClipboard(NULL);
HWnd = GetClipboardData(CF_DIB);
Bon, là j'ai donc mon Handle. Si je traite les erreurs et tout, je m'aperçois que ça marche(Handle NULL si pas d'img dans clipboard...).
C'est là que cela se complique pour moi: comment est-ce que l'on récupère les données à partir du Handle?
pour info, le résultat de GetClipboardData fait que Hwnd doit pointer vers une structure :

typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO;

et moi je veux plus précisément récupérer la composante bmiColors[x]...
typedef struct tagRGBQUAD {
BYTE rgbBlue; BYTE rgbGreen;
BYTE rgbRed; BYTE rgbReserved;
} RGBQUAD;

(car en fait mon tableau de retour doit être de la forme:
int Image[Largeur*3][hauteur];
...avec Largeur et hauteur fixe et connues; le *3 car RGB.... )

Merci d'avance.

Doggyk.
mercredi 6 octobre 2004 à 12:37:37 | Re : fonction GetClipboardData()

ymca2003

le plus simple je pense c'est de récuprer un HBITMAP et de récupérer les données en 32bits/pixels :

OpenClipboard(hWnd);
HBITMAP hBmp = (HBITMAP)GetClipboardData(CF_BITMAP);

// récupération des informations sur le bitmap
BITMAP bmpInfo;
GetObject(hBmp, sizeof(bmpInfo), &bmpInfo);

// taille
SIZE size;
size.cx = bmpInfo.bmWidth;
size.cy = bmpInfo.bmHeight;

// allocation mémoire (on va récupérer en 32 bits par pixel)
DWORD dwSize = 4*sizeBmp.cx*sizeBmp.cy;
LPVOID lpMem = VirtualAlloc(NULL, dwSize, MEM_COMMIT, PAGE_READWRITE);
if(lpMem == NULL)
return NULL;

// initialisation structure BITMAPINFO
BITMAPINFO bi;
ZeroMemory(&bi, sizeof(BITMAPINFO));
bi.bmiHeader.biSize = sizeofBITMAPINFOHEADER);
bi.bmiHeader.biPlanes = 1;
bi.bmiHeader.biBitCount = 32;
bi.bmiHeader.biWidth = sizeBmp.cx;
bi.bmiHeader.biHeight = sizeBmp.cy;
bi.bmiHeader.biCompression = BI_RGB;

// récupération bits
hdc = GetDC(NULL);
int nResult = GetDIBits(hdc, hBmp, 0, sizeBmp.cy, lpMem, &bi, DIB_RGB_COLORS);
ReleaseDC(NULL, hdc);

// fermeture clipboard
CloseClipboard();


au final, lpMem contient les pixels du bitmap, ligne par ligne en partant du bas avec 4 octets par pixels. Le pixel (x,y) avec la convention x à gauche y en bas :

DWORD dwPixel = *(((DWORD*)lpMem)+(sizeBmp.cy-y-1)*sizeBmp.cx+x);

dwPixel doit être sous le format 0x00BBGGRR (à vérifier).


Cette discussion est classée dans : partir, image, handle, byte, getclipboarddata


Répondre à ce message

Sujets en rapport avec ce message

Gros Ennui [ par oRTEEZ ] Bonjour, bonsoir,Voila mon souci, je dois faire un programme qui doit accepte un entre divers formats d'images. Puis dessiner dessus un rectangle, pui charger une image bmp à partir du disque dur et apercu dans fenetre [ par djmix73 ] En fait, jai windows xp, je fais un projet informatique c'est une gestion de film, je voudrai charger une image bmp à partir du disque dur et avoir l' Est-il possible d'afficher une image bmp à partir d'un projet Win32 Console Application ? [ par iris00 ] tout est dans la question.... :) sauvegarder image à partir d'un HDC [ par aujeanfr ] Bonjour,Je souhaite sauvegarder des images Bitmap sur disque après un traitement d'image avec setpixel();Comment fait-on pour creer une bitmap à parti vreation video a partir d'addresse memoire de buffer image [ par rasta_raf ] Bonjour,-Je voudrais savoir s?il y a un programme, une application ou autre pouvant, à partir de l?adresse d?une mémoire buffer d?une image (cette ima handle fenetre [ par latisaniere ] Bonjour,Je dois créer sur un clientArea de 800*600, 4 fenêtres à partir d'une source videoA partir de l'acquisition video je fige une image ensuite la Charger une image à partir du chemin [ par Tibabou ] Bonjour/soir,J'aimerais savoir comment faire pour charger une image dans un controle (button) à partir de son emplacement sur le disque.Merci.Tibabou enregistrer une image [ par moumouteb ] salut, Bon voila après des recheches sur comment saugarder des images à partir d'un application MFC je m'en remets à vous. Il n'exista pas une fontion reconstitution d'image a partir de leurs vecteurs descriptifs [ par yacine_mezzi ] Bonjour tout le monde, je cherche un programme qui reconstruit une image partant de son vecteur descriptif ( calcul du moment complexe,moment de zerni Icone et Dialogue [ par sebastienbro ] Bonjour,J'ai un dialogue que j'affiche grâce a CreateDialog. Jusque là aucun problème.Seulement, j'ai mis une image, et je voudrai insérer dans mon im


Nos sponsors


Sondage...

Comparez les prix

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,718 sec (3)

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