2009-02-25 12 views
0

J'écris un interpréteur en C++ managé pour, entre autres, le format d'image PPM. La spécification d'image permet des images avec jusqu'à deux octets par pixel par canal ou des images couleur de 48 bits par pixel. J'essaye de lire ce format et de le convertir en bitmap .Net, mais j'ai du mal à le faire fonctionner. Quand j'ai 24 bits par images de pixels, je les initialiser comme ceci:Comment initialiser des bitmaps 48bpp à partir de RGB?

bmp = gcnew Bitmap(width, height); 
<for each pixel> 
    bmp->SetPixel(x, y, Drawing::Color::FromArgb(Convert::ToInt32(fileData[offset]), 
     Convert::ToInt32(fileData[offset + 1]), 
      Convert::ToInt32(fileData[offset + 2]))); 
    offset += 3; 

48 bits par images de pixel, j'initialisé le bmp comme suit:

bmp = gcnew Bitmap(widht, height, Imaging::PixelFormat::Format48bppRgb); 

Cependant, lors d'une tentative de remplir les données de pixel, je suis incapable de spécifier des valeurs de couleur en utilisant 'Color :: FromArgb()' avec des valeurs supérieures à 255 pour R, G et B. Y at-il un moyen de contourner cette limitation?

Répondre

0

System.Drawing peut gérer des formats de fichiers image 48 et 64 bits, mais convertit les valeurs de pixel en 24 bits. Je ne connais aucun moyen de préserver la fidélité des couleurs. Voir la section des commentaires de: PixelFormat Enumeration