Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用.NET4中的CMYK颜色空间向图像添加文本_C#_.net_Imaging_Cmyk - Fatal编程技术网

C# 如何使用.NET4中的CMYK颜色空间向图像添加文本

C# 如何使用.NET4中的CMYK颜色空间向图像添加文本,c#,.net,imaging,cmyk,C#,.net,Imaging,Cmyk,我正在从事一个项目,其核心是向图像中添加文本,例如,给定一个背景图像(B)和一些指定字体的文本,点大小和字体(a),这两个元素组合在一起生成(C): 最终的结果是使用这些图像进行打印,因此背景使用CMYK颜色空间,我需要将整个过程保持在CMYK范围内,否则打印时颜色会出错。(注:优秀) 我尝试了几种不同的方法将这些图像合成在一起: 绘图隐式地将所有内容转换为RGB System.Windows.Media.Imaging-无合成方法 System.XAML/WPF-非常有希望,但是Rende

我正在从事一个项目,其核心是向图像中添加文本,例如,给定一个背景图像(B)和一些指定字体的文本,点大小和字体(a),这两个元素组合在一起生成(C):

最终的结果是使用这些图像进行打印,因此背景使用CMYK颜色空间,我需要将整个过程保持在CMYK范围内,否则打印时颜色会出错。(注:优秀)

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

  • 绘图隐式地将所有内容转换为RGB
  • System.Windows.Media.Imaging-无合成方法
  • System.XAML/WPF-非常有希望,但是RenderTargetBitmap在PixelFormats.Cmyk32中不起作用(引发ArgumentException)
我已经看过但没有尝试过第三方商业组件,因为价格似乎开始偏高,并继续上涨:

  • (截至2010年12月,约1800美元)
  • (截至2010年12月,约3300美元)
这在.NET4中可能吗

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

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

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

如果您对此进行了大量研究,您可能已经看到了这些链接。但是,以防万一,这里有一些我发现可能对你有帮助的链接

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

特别提到使用颜色配置文件和

以下是另一个SO链接:

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

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


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

感谢您发布这些内容,我四处查看并找到了一些使用.NET转换位图格式的资源(在我的问题中为谷歌发布了一个代码示例),对于以CMYK格式保存的源图像而言,这是保证打印图像质量的关键。我已经看过Atlasoft DotImage,“Pro”版本似乎符合我的要求,但价格约为3000美元。请注意,从RGB/CMYK转换为RGB/CMYK是不可逆的-您将丢失一些颜色信息。事实上,正是因为这个原因,我避免了在中间步骤将现有的源图像转换为RGB。我最终使用了PDF(iTextSharp)库在图像上合成文本,因为这保留了字体符号和CMYK图像。字体仍然以RGB格式指定,但是颜色足够简单,不会成为问题。