如何使用.NET 4中的CMYK ColorSpace向图像添加文本

时间:2010-12-13 17:22:12

标签: c# .net imaging cmyk

我正在开发一个项目,其核心是向图像添加文本,所以给定背景图像(B)和指定字体中的一些文本,点大小和字体(A)这两个是合成的一起生产(C): Example Image

最终的结果是使用这些图像打印,因此背景使用CMYK色彩空间,我需要将整个过程保持在CMYK内,或者打印时颜色看起来不对。 (注意:优秀article on Color Spaces and .NET on CodeProject

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

  • 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(没有透明度)但是如果你使用某些类(即传递上述ImageSource的RenderTargetBitmap将抛出异常)。

1 个答案:

答案 0 :(得分:1)

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

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

Convert RGB color to CMYK?

具体来说,它提到了使用颜色配置文件和Windows Color Management APIs.

这是另一个SO链接:

How to convert CMYK to RGB programmatically in indesign

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

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

The are any CMYK graphics library?

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