我有一个ushort像素数据数组(16位灰度值),并且正在尝试将其保存为jpeg图像。但是,我的代码在“保存命令”中崩溃,并显示“ GDI +中发生一般错误”。我不知道如何解决此问题。我要保存到的目录是由我的应用程序创建的,并且我向其中写入了其他文件。所以我知道这不是权限问题。可能是数据损坏问题?我在将ushort数据放入Bitmap对象的步骤中做错了吗?因为我有ushort数据,所以我发现花了一些力气才能弄清楚如何将其放入Bitmap对象,而且我可能做错了。

这是我的代码:

Bitmap img = new Bitmap(width, height, PixelFormat.Format16bppGrayScale);
Rectangle rect = new Rectangle(0,0, width, height);
BitmapData picData = img.LockBits(rect, ImageLockMode.ReadWrite, img.PixelFormat);
IntPtr pixelStartAddress = picData.Scan0;

WriteableBitmap pic = new WriteableBitmap(width, height, 96.0, 96.0, System.Windows.Media.PixelFormats.Gray16, null);

int stride = (thumb.XSize * pic.Format.BitsPerPixel + 7) / 8;
pic.WritePixels(new System.Windows.Int32Rect(0, 0, width, height), dataArray, stride, 0);

pic.CopyPixels(new System.Windows.Int32Rect(0,0,thumb.XSize, thumb.YSize),pixelStartAddress, dataArray.Length * sizeof(ushort), stride);

img.UnlockBits(picData);
img.Save(path, ImageFormat.Jpeg);


整个事情变得非常令人沮丧。请帮忙?!

最佳答案

我担心这与灰度/ JPG有关。我不知道JPEG是否支持灰度。

我会尝试将位图声明为一种正常的颜色。并测试。

关于c# - 将位图对象另存为jpeg,C#时出现“GDI +中发生一般错误”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/997902/

10-16 11:46