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);
このすべてが非常にイライラするようになりました。助けてください?!