在C#中为图像分配ICC颜色配置文件

6
简而言之:我想为一张图片指定ICC颜色配置文件,而不是应用它。
更多信息: 在我们公司中,我们需要将多层PDF文件合并为一层。为此,我们将PDF页面合并为图像,然后将该图像保存为PDF。但在创建图像的过程中,图像的颜色配置文件会丢失。如果我们在C#中应用颜色配置文件,则配置文件将从设备RGB(.NET的默认输出)转换为sRGB_IEC61966-2-1_no_black_scaling.icc配置文件。在转换过程中,一些颜色会发生变化。我们需要指定颜色配置文件,而不是应用它。这意味着没有颜色被转换。
有谁知道如何实现这一点吗?提前致谢。
1个回答

7
在开始处理位图之前(即在开始布局各个PDF组件之前),请确保应用了目标ICC配置文件。您说您的单独图片已经嵌入所需的配置文件,但是在转换过程中丢失了。为了保留配置文件,请确保使用以下加载方法,该方法尊重任何颜色配置文件信息:

http://msdn.microsoft.com/en-us/library/4sahykhd.aspx

您可以将这个位图作为您合成工作的目标,然后稍后导出它。它应该保留原始的ICC配置文件。
或者,您可以使用FreeImage或ImageMagick库来显式管理颜色配置文件。它们都有.NET包装器,并允许剥离/应用ICC配置文件: Free Image Library Image Magick Command-Line Profile Options Image Magick .NET Wrapper 我希望这能帮到您。

我正在使用Aspose.Pdf.Kit将PDF页面转换为System.Windows.Image,但该函数不提供保留颜色配置文件的选项。但是我目前正在研究您建议的库。 - SynerCoder
这个(免费的图像库)解决了我提出的问题,但现在我有另一个问题,我将在17小时内授予悬赏。 - SynerCoder
@SynerCoder - 很高兴这个库对你有帮助。我一直想自己多做些事情,因为它似乎非常灵活。不过很抱歉你又遇到了一个新问题 :( - Dave R.

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