Преобразование растрового изображения RGBA с плавающей точкой в ​​стандартное растровое изображение Dotnet - PullRequest
1 голос
/ 01 января 2012

Я пытаюсь использовать библиотеку FreeImage.Net, чтобы открыть изображение и преобразовать его в стандартное растровое изображение, но либо должен быть пропущенный шаг, либо FreeImage просто не может преобразовать RGBA с плавающей запятой в 32BPP RGBA :

FreeImageBitmap fib = new FreeImageBitmap("C:\\test.exr");
Console.WriteLine(fib.ImageType); //FIT_RGBAF   
fib.ConvertType(FREE_IMAGE_TYPE.FIT_BITMAP, true); //returns False

Ошибка преобразования:

Невозможно преобразовать из типа 12 в тип 1; Такого преобразования не существует.

Мне нужно это как растровое изображение RGBA 32BPP исключительно для того, чтобы иметь возможность преобразовать его в System.Drawing.Bitmap, поэтому я могу нарисовать его, используя GDI +. Я готов использовать другую библиотеку изображений, если необходимо, или рассмотреть WPF вместо Winforms, если кто-то думает, что там будет найдено решение.

Я загрузил пример EXR с плавающей запятой для тестирования: http://dl.dropbox.com/u/2817180/test.exr

1 Ответ

2 голосов
/ 04 января 2012

А.С. Нико сказал, что вы должны сделать это вручную.Используя небезопасный код и указатели, которые булавят ваши буферы памяти и сделают его неподвижным, ваша подпрограмма будет и быстрой, и простой в написании.

Более того, если у вас только один исходный и один целевой формат.

...