2012-04-03 38 views
2

バイト配列をイメージに変換する方法は分かっています。ここに私のコードはあります:BGRバイト配列をイメージに変換する方法

//Here create the Bitmap to the know height, width and format 
Bitmap bmp = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); 
//Bitmap bmp = new Bitmap(width, height); 

//Create a BitmapData and Lock all pixels to be written 
System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(
        new Rectangle(0, 0, bmp.Width, bmp.Height), 
        ImageLockMode.WriteOnly, bmp.PixelFormat); 

//Copy the data from the byte array into BitmapData.Scan0 
Marshal.Copy(imgDataArray, 0, bmpData.Scan0, imgDataArray.Length); 
//Unlock the pixels 
bmp.UnlockBits(bmpData); 
bmp.Save("output1.png", System.Drawing.Imaging.ImageFormat.Png); 

しかし、バイト配列がBGR形式の場合、画像の色は間違っています(赤は青、青は赤です)。誰でも私がそれを理解するのを助けることができますか?ありがとう。

答えて

2

あなたはアレイを通過し、各ピクセルのR/B値を交換する必要があるように見えます。これはかなり簡単です。

http://www.codeproject.com/Articles/2056/Image-Processing-for-Dummies-with-C-and-GDI-Part-3の記事で、エッジエンハンスメントヘッダーの下にコードを記述する必要があります。

+0

はい、動作します。しかし、処理には時間がかかります。 –

+0

まあ、速度要件は不明です。このような変換を非常に迅速に行うことが可能でなければなりません。独自の最適化された画像変換関数を作成するか、サードパーティの画像処理ライブラリを評価して、必要に応じてすばやく動作するライブラリを見つける必要があります。ソースデータを別の形式で取得することもできます。 – djdanlib

関連する問題