У меня есть массив данных пикселя 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);
Все это стало очень неприятным. Пожалуйста, помогите?!