如何使用.NET 4中的CMYK Colorspace添加文本
题
我正在研究一个项目,该项目涉及将文本添加到图像中,因此作为一个给定背景图像(b)的示例,以及指定字体,点大小和字体(a)中的一些文本(a),两者合成以生成(C):
最终的结果是使用这些图像打印,因此背景使用CMYK颜色空间,我需要将整个过程保留在CMYK中,或者打印时颜色看起来不错。 ((笔记: 出色的 关于颜色空间和.NET的文章)
我尝试了几种将这些图像合成的不同方法:
- System.Drawing隐式将所有内容转换为RGB
- system.windows.media.imaging-无合成方法
- System.XAML/WPF-非常有前途的RenderTargetBitMap在PixelFormats.cmyk32中不起作用(抛出一个参数exception)。
我已经看过但没有尝试过第三方商业组件,因为价格似乎开始高并继续上涨:
- 图形厂 (〜截至12/2010 $ 1800)
- atalasoft dotimage (〜截至12/2010 $ 3300)
这可能在.NET 4中吗?
编辑:因为别人可能想做一些稍有不同的事情,只需转换任何格式 Windows.System.Media.Imaging
能够加载到CMYK这是我使用的代码:
var bitmapConverter = new FormatConvertedBitmap();
bitmapConverter.BeginInit();
bitmapConverter.Source = sourceImage;
bitmapConverter.DestinationFormat = PixelFormats.Cmyk32;
bitmapConverter.EndInit();
要澄清上述代码将图像源转换为cmyk32(无透明度),但是如果您使用某些类(即 RenderTargetBitmap
通过上述图像资源将引发例外)。
解决方案
如果您对此有很多看法,那么您可能已经看到了这些链接。但是,以防万一,我发现一些链接可能对您有所帮助。
这是有关与CMYK在.NET中合作的链接:
特别是它使用颜色配置文件和 Windows颜色管理API。
这是另一个链接:
一个答案者提到CMYK和RGB之间没有确切的转换。
这是关于合成两个CMYK图像的链接,而无需转换为RGB:
答案者建议使用与他相关的商业产品。
不隶属于 StackOverflow