我正在尝试用C#写入16位灰度图像,一切都很好,但是当我尝试保存它时,它给了我一个通用的GDI +错误。
这是代码:
byte [] data = new byte [200 * 100 * 2];
Random end = new Random();
for (int i = 0; i < data.Length; i++)
data[i] = (byte)end.Next(0, 255);
Bitmap bmp = new Bitmap(200, 100, PixelFormat.Format16bppGrayScale);
BitmapData bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height),
ImageLockMode.WriteOnly, PixelFormat.Format16bppGrayScale);
Marshal.Copy(data, 0, bd.Scan0, data.Length);
bmp.UnlockBits(bd);
// on this line I get a "parameter not valid exceptioin"
// and if I remove it, I cannot save the original image (GDI+ generic error occurs)
Bitmap noError = new Bitmap(bmp);
bmp.Dispose();
bmp.Save("D:\\Tes.bmp", ImageFormat.Bmp);
我已尝试过将原始图像克隆到不同的图像和所有内容。什么都行不通。
PS。当像素格式是8BppIndexed时,它工作得很好。