我正在开发一个项目,其核心是向图像添加文本,所以给定背景图像(B)和指定字体中的一些文本,点大小和字体(A)这两个是合成的一起生产(C):
最终的结果是使用这些图像打印,因此背景使用CMYK色彩空间,我需要将整个过程保持在CMYK内,或者打印时颜色看起来不对。 (注意:优秀article on Color Spaces and .NET on CodeProject)
我尝试了几种不同的方法将这些图像合成在一起:
我看过但未尝试第三方商业组件,因为价格似乎开始走高并继续上涨:
这在.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
将抛出异常)。
答案 0 :(得分:1)
如果你看了很多,你可能已经看过这些链接了。但是,以防万一,我发现这些链接可能对您有所帮助。
以下是关于在.NET中使用CMYK的SO的链接:
具体来说,它提到了使用颜色配置文件和Windows Color Management APIs.
这是另一个SO链接:
How to convert CMYK to RGB programmatically in indesign
一位回答者提到CMYK和RGB之间没有确切的转换。
以下是关于合成两个CMYK图像而不转换为RGB的链接:
The are any CMYK graphics library?
回答者建议使用他所属的商业产品。