从.NET将图像写入每通道32位(每像素128位)的位图

5
我在运行时生成HDR图像,需要以完美质量保存它们(我通过多个滤镜链接这些图像,因此每次都要保持最大的保真度,以避免过多的质量损失)。
我使用位图类保存这些图像,并使用PixelFormat.Format32bppArgb,我也找到了一个64位格式,但列表中没有128位格式(每通道32位X 4通道)。
如何以不丢失任何信息的方式保存由4个浮点组件组成的颜色数组?只要我能从.NET中进行操作即可使用任何图像格式(如果内置支持,则第三方库可以)。
最好是纯.NET解决方案(最好不要使用包装器来调用非托管代码/非托管库)。

1
自己发明一种图像格式并不能让你走得太远,你仍然需要实际上显示图像。你应该看看类似OpenEXR这样的东西或者寻找一个库。 - Hans Passant
我并不想发明自己的格式,只是想将图像存储在任何支持我的前提条件的现有格式中。正如我所提到的,我非常乐意为库付费,这甚至已经在我的问题中了,而发明自己的格式则不是!编辑:请注意,我甚至不感兴趣在我的程序中显示图像,只是为了进一步使用而保存它,这取决于用户,因此它可能会被导入到其他HDR软件中,显示它对我来说超出了范围。 - Ronan Thibaudau
1个回答

2

我的错,我没有添加这个(我在使用 .net 工作得太多了,所以对我来说很明显,但是阅读问题时显然不是很明显),我想要一个纯托管的解决方案,所以付费的 .net 库可以,但是库的包装器(即使是免费的)就不行了。然而,如果没有人能提供纯 .net 解决方案,我会将其记录为答案。 - Ronan Thibaudau
抱歉,我不知道任何纯.NET解决方案能像ImageMagick一样强大或擅长图像处理。 - Ani
其实我不需要进行图像处理,我是通过3D渲染自己生成图像,然后只想保存图像而非进行处理,因此我基本上是在寻找一种解决方案,可以让我循环遍历我的float数组中的每个像素,保存位图到磁盘而已,不需要其他功能也没关系。 - Ronan Thibaudau
我明白了。由于OpenEXR格式(请参考http://www.openexr.com/openexrfilelayout.pdf)(或者大多数图像格式,实际上)并不容易读取和写入 - 它们绝对不仅仅是一个foreach循环,你可能需要依赖于一个库。而且,处理加载或保存专用图像格式的大多数库都可能会有所作为。所以我不知道你是否能找到任何与你所需的(HDR+完全托管+仅保存)一样专业的东西。尤其是商业产品 - 这样一个针对性很强的产品实际上不会有太大销量。 - Ani
我明白了,我会检查一下 exr 是否适用于我,感谢你的答复! - Ronan Thibaudau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接