を動作しません。私のコードは動作しますが、バイトは私にとっては奇妙です。私は、実際のバイトではないインデックスを持っていると思います。これが計算して元に戻すと、画像のサイズが大きく(画像サイズが同じでも)色が異なってしまいます。バイトからコピーは、私がMarshall.Copyでバイトをコピーするバイト配列にビットマップからバイトやバックMarshall.Copyと右
Bitmap bmp = new Bitmap(imagepath);
Width = bmp.Width;
Height = bmp.Height;
byte[] data;
BitmapData bdata;
switch (bmp.PixelFormat)
{
case PixelFormat.Format8bppIndexed:
{
data = new byte[Width * Height];
bdata = bmp.LockBits(new Rectangle(0, 0, Width, Height),ImageLockMode.ReadOnly, bmp.PixelFormat);
Marshal.Copy(bdata.Scan0, data, 0, data.Length);
bmp.UnlockBits(bdata);
break;
}
}
保存画像:
BitmapData bmData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);
IntPtr pNative = bmData.Scan0;
Marshal.Copy(data, 0, pNative, Width * Height);
bmp.UnlockBits(bmData);
bmp.Save("output.gif",ImageFormat.Gif); //without format, have same problem
私は最初のピクセルから色を読めば、私が得た:Color [A=0, R=0, G=0, B=2]
。これは入力画像の色ですか?
出力は入力から洙異なっている理由私は、知りません。問題はどこですか? (小さな画像申し訳ありません)入力および出力から
私はImageConverterクラスをバイト配列にビットマップに変換され、それが常にうまく – Sasha