Вы используете неправильный тип EdsImageSource
.Так как вы загружаете изображение в формате RAW, вы также должны использовать EdsImageSource.RAWFullView
.EdsImageSource.FullView
подходит, например, для JPG или TIFF.
После того, как вы это измените, все должно работать просто отлично.
Редактировать: только что увидел, что вы используете RGB16
как цель, но остальная часть кода предполагает нормальный 8-битный RGB.Вам придется изменить целую кучу вещей, чтобы заставить это работать правильно.Я бы посоветовал вам использовать RGB
, если вам действительно не нужен 16 бит.
Редактировать 2: Похоже, что библиотека немного не подходит в этом отношении (я должен действительно обновить ее).В любом случае вы всегда можете проверить заголовочные файлы SDK на предмет актуальных значений.Вот текущее определение для EdsImageSource
:
enum EdsImageSource
{
FullView = 0,
Thumbnail,
Preview,
RAWThumbnail,
RAWFullView,
}
Что касается изменений, необходимых для 16 бит:
datalength
неверно - вы используете
byte
вместо ushort
для установки пикселей - вы создаете
Bitmap
с PixelFormat.Format24bppRgb
- , тогда есть еще одна вещь, где
Bitmap
не полностью поддерживает 16Bit.См. эту статью для получения более подробной информации.
В зависимости от того, что вам нужно сделать, вероятно, лучше использовать исходные данные пикселей непосредственно, как вы получаете их из SDKили используйте другую графическую библиотеку (например, WPF, SkiaSharp, ImageSharp и т. д.)