Créer CImage de tableau d'Octets

J'ai besoin de créer un CImage à partir d'un tableau d'octets (en fait, de son un tableau de unsigned char, mais je lance à n'importe quelle forme est nécessaire). Le tableau d'octets est dans la forme "RGBRGBRGB...". La nouvelle image doit contenir un copie de l'image en octets, plutôt que d'utiliser la mémoire du tableau d'octets en lui-même.

J'ai essayé beaucoup de différentes manières d'atteindre ce -- y compris en passant par plusieurs HBITMAP les fonctions de création, d'essayer de les utiliser BitBlt-et rien d'autre jusqu'à présent, a travaillé.

Pour tester si la fonction fonctionne, il doit passer ce test:

BYTE* imgBits;
int width;
int height;
int Bpp;   //BYTES per pixel (e.g. 3)
getImage(&imgBits, &width, &height, &Bpp); //get the image bits

//This is the magic function I need!!!
CImage img = createCImage(imgBits, width, height, Bpp);

//Test the image
BYTE* data = img.GetBits();  //data should now have the same data as imgBits

Toutes les implémentations de createCImage() jusqu'à présent se sont retrouvés avec data pointant vers un vide (rempli de zéros) tableau.

  • On dirait que vous devez remplir une structure de BITMAPINFO pour votre imgBits, instancier un CImage, appelez Create() pour créer un vide bitmap de taille correcte, GetDC() pour obtenir votre CImage du DC et ensuite utiliser ::SetDIBitsToDevice() pour tracer votre imgBits à votre CImage.
  • Merci, il semble que ce est le chemin à parcourir. Je suis sûr que j'ai été dans cette voie avant, mais il a abandonné parce que je ne pense pas que j'avais la tête à droite. Je vais vous donner un autre aller...