ビットマップをFormat24bppRgbに変換しようとしています。 各ピクセルにカラー配列のセットが必要なので、安全でないコードを使用しました。ビットマップをFormat24bppRgbに変換する
ビットマップが何らかの形でJpegに変換されるという問題があります。 カラー配列を見ると、黒と白の間に奇妙な色(黄色または青色)があります。
色の変化を防ぐ方法はありますか?
//image
mstr = new MemoryStream(msgSet.VMSPage2Image);
bitmapFile = new Bitmap(mstr);
data = bitmapFile.LockBits(new Rectangle(0, 0, bitmapFile.Width, bitmapFile.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
colors = new Color[data.Height, data.Width];
unsafe
{
byte* imgPtr = (byte*)(data.Scan0);
for (int i = 0; i < data.Height; i++)
{
for (int j = 0; j < data.Width; j++)
{
// write the logic implementation here
imgPtr += 1;
int G = *imgPtr;
imgPtr += 1;
int R = *imgPtr;
imgPtr += 1;
int B = *imgPtr;
colors[i, j] = Color.FromArgb(R, G, B);
}
imgPtr += data.Stride - data.Width * 3;
}
}
http://stackoverflow.com/questions/2003643/how-is-1-bit-bitmap-data-converted-to-8bit-24bpp –
あなたは説明できます」ビットマップは何らかの形でJpegに変換されます。フレームワークはビットマップしか扱わないので、JPG/PNG/GIF /などを読み込むと、ビットマップにデコードされ、ファイルを再度保存するまでそのままの状態を保ちます。 –
まあ、jpegへのビットマップはちょうど私の推測です..そしてポイントは私が24bppRgbに変換するとき、私はいくつかのピクセルで元の色を失います。 また、bmpファイルをロードしています。 – Devphil