Ho dati di pixel grezzi provenienti da una fotocamera in formato RGB8 che ho bisogno di convertire in un Bitmap
. Tuttavia, lo Bitmap PixelFormat
sembra supportare solo i formati RGB 16, 24, 32 e 48.Converti byte RGB8 [] in Bitmap
Ho tentato di utilizzare PixelFormat.Format8bppIndexed
, ma l'immagine appare scolorita e invertita.
public static Bitmap CopyDataToBitmap(byte[] data)
{
var bmp = new Bitmap(640, 480, PixelFormat.Format8bppIndexed);
var bmpData = bmp.LockBits(
new Rectangle(0, 0, bmp.Width, bmp.Height),
ImageLockMode.WriteOnly, bmp.PixelFormat);
Marshal.Copy(data, 0, bmpData.Scan0, data.Length);
bmp.UnlockBits(bmpData);
return bmp;
}
C'è un altro modo per convertire questo tipo di dati in modo corretto?
articoli utili: [questo] (http://msdn.microsoft.com/en-us/library/ windows/desktop/ee719797 (v = vs.85) .aspx) e [this] (http://msdn.microsoft.com/en-us/library/ms969901.aspx) –
Curioso: che tipo/modello di fotocamera produce quel formato? Inoltre: [questo] (http://www.theimagingsource.com/en_US/support/documentation/icimagingcontrol-activex/PixelformatRGB8.htm) la fonte dice che è un formato monocromatico a 8 bit. – TaW
Un'altra citazione da [questa fonte] (http://www.theimagingsource.com/en_US/support/documentation/icimagingcontrol-activex/PixelformatRGB8.htm): _RGB è bottom-up, la prima riga ha indice (lines-1_ – TaW