Tôi có dữ liệu pixel thô từ một máy ảnh ở định dạng RGB8 mà tôi cần chuyển đổi thành Bitmap
. Tuy nhiên, chỉ có Bitmap PixelFormat
dường như hỗ trợ các định dạng RGB 16, 24, 32 và 48.Chuyển đổi byte RGB8 [] thành Bitmap
Tôi đã cố sử dụng PixelFormat.Format8bppIndexed
nhưng hình ảnh bị đổi màu và đảo ngược.
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ó cách nào khác để chuyển đổi loại dữ liệu này chính xác không?
bài viết hữu ích: [này] (http://msdn.microsoft.com/en-us/library/ windows/desktop/ee719797 (v = vs.85) .aspx) và [this] (http://msdn.microsoft.com/en-us/library/ms969901.aspx) –
Tò mò: Loại/kiểu máy ảnh sản xuất định dạng đó? Ngoài ra: [this] (http://www.theimagingsource.com/en_US/support/documentation/icimagingcontrol-activex/PixelformatRGB8.htm) nguồn nói rằng nó là một định dạng đơn sắc 8bit. – TaW
Một trích dẫn khác từ [nguồn này] (http://www.theimagingsource.com/en_US/support/documentation/icimagingcontrol-activex/PixelformatRGB8.htm): _RGB là từ dưới lên, dòng đầu tiên có chỉ mục (dòng-1_ – TaW