1

我正在尝试使用 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 型;不存在这样的转换。

我需要它作为 32BPP RGBA 位图,只是为了能够将其转换为System.Drawing.Bitmap.,所以我可以使用 GDI+ 绘制它。如有必要,我愿意使用不同的图像库,或者如果有人认为在那里可以找到解决方案,我愿意考虑 WPF 而不是 Winforms。

我上传了一个用于测试的示例浮点 EXR:http: //dl.dropbox.com/u/2817180/test.exr

4

1 回答 1

2

正如 Niko 所说,你应该手动完成。使用不安全的代码,以及将您的内存缓冲区锁定并使其不可移动的指针,您的例程将既快速执行又易于编写。

如果您只有一种源格式和一种目标格式,则更是如此。

于 2012-01-04T09:08:47.773 回答