3

我正在做一个项目,其核心涉及向图像添加文本,例如,给定背景图像 (B) 和指定字体、点大小和字体 (A) 的一些文本,这两者被合成在一起以产生(C): 示例图像

最终结果是使用这些图像进行打印,因此背景使用 CMYK 颜色空间,我需要将整个过程保持在 CMYK 内,否则打印时颜色看起来不对。(注:CodeProject 上关于色彩空间和 .NET 的优秀文章)

我尝试了几种不同的方式将这些图像合成在一起:

  • System.Drawing 将所有内容隐式转换为 RGB
  • System.Windows.Media.Imaging - 没有合成方法
  • System.XAML/WPF - 非常有希望,但是 RenderTargetBitmap 在 PixelFormats.Cmyk32 中不起作用(引发 ArgumentException)。

我已经看过但没有尝试过第三方商业组件,因为价格似乎开始很高并继续上涨:

这在 .NET 4 中可行吗?

编辑: 因为其他人可能想做一些稍微不同的事情,只需将任何Windows.System.Media.Imaging能够加载到 CMYK 的格式转换为我使用的代码:

var bitmapConverter = new FormatConvertedBitmap();
bitmapConverter.BeginInit();
bitmapConverter.Source = sourceImage;
bitmapConverter.DestinationFormat = PixelFormats.Cmyk32;
bitmapConverter.EndInit();

为了澄清上述代码将图像源转换为 CMYK32(无透明度),但是如果您使用某些类(即RenderTargetBitmap传递上述 ImageSource 将引发异常)。

4

1 回答 1

1

如果你看过很多 SO,你可能已经看过这些链接。但是,以防万一,这里有一些我发现可能对您有帮助的链接。

这是关于在 .NET 中使用 CMYK 的 SO 链接:

将RGB颜色转换为CMYK?

具体来说,它提到了使用颜色配置文件和Windows 颜色管理 API。

这是另一个 SO 链接:

如何在indesign中以编程方式将CMYK转换为RGB

一位回答者提到 CMYK 和 RGB 之间没有精确的转换。

这是一个关于合成两个 CMYK 图像而不转换为 RGB 的链接:

有任何 CMYK 图形库吗?

回答者建议使用他所属的商业产品。

于 2010-12-13T17:33:34.400 回答