使用RMagick将CMYK图像正确转换为RGB

我一直在使用下面的颜色转换

if @image.colorspace == Magick::CMYKColorspace # @image.colorspace #=> CMYKColorspace=12 @image.colorspace = Magick::RGBColorspace @image = @image.negate end 

它大约有效,但颜色亮度不对。 我需要否定图像的事实留下了非常难闻的气味。

该文档提到了使用color_profiles,但除此之外我找不到多少。

我现在正在努力

 @image = @image.quantize(16777216, Magick::RGBColorspace) 

颜色更好,但仍然关闭。

谢谢Pekka,你给我一个答案(+1)。

您必须安装使用小色彩管理系统(LCMS)编译的ImageMagick。 如果使用安装程序或包,可能已经是这种情况。 但我是从源头编译的。 它就像从源代码安装LCMS并重建ImageMagick( ./configure; make; make install )一样简单。

在ImageMagick中,下面可以很好地重现准确的颜色:

convert FILENAME -profile /PATH_TO_PROFILE/sRGB.icm OUT.jpg

所以在RMagick中我使用以下内容:

 if @image.colorspace == Magick::CMYKColorspace # Adjust the path as necessary @image.color_profile ="/usr/local/share/ImageMagick-6.5.4/config/sRGB.icm" end @image.write("out.jpg") { self.quality = 85 } 

我花了很长时间尝试使用RMagick和Rails从CMYK EPS转换为RGB PNG。 希望这对某人有用:

 def convert_image_from_cmyk_to_rgb( image ) #puts image.alpha? if image.colorspace == Magick::CMYKColorspace image.strip! image.add_profile("#{Rails.root}/lib/USWebCoatedSWOP.icc") image.colorspace == Magick::SRGBColorspace image.add_profile("#{Rails.root}/lib/sRGB.icc") end image end 

您可以直接从Adobe下载ICC文件, url为http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html

我唯一无法理解的是如何保持透明度。 我想要使​​用的EPS具有透明背景,正在变成白色。 不幸的是我不能做像image.transparent( "white" )这样的东西,因为我想要保持白色的图像中有白色。

如果我取消注释puts image.alpha? 在上面的代码中它返回false

有没有人知道我正在尝试用当前版本的RMagick做什么,因为我开始怀疑是否不支持导入具有透明度的CMYK EPS。

谢谢!

在这种情况下,传入的文件确实有一个配置文件。 我会再研究一下。 我迷失了颜色配置文件(比如我在哪里下载它们?ICC网站没什么帮助)

你不是唯一一个困惑的人; 我也是。 有关ImageMagick站点的讨论可能值得通过以下方式进行讨论: 这里据我所知,当使用的配置文件可以被识别(例如监视器配置文件)或嵌入到文件中时,可以正确使用配置文件(至少可以在Photoshop中完成TIFF和JPG,我想)。 检查例如: 这里 。 祝好运。

我发现The Who的命令行解决方案运行得很漂亮,但RMagick解决方案对我不起作用。

为了让它在RMagick中工作,我不得不使用Magick :: Image#add_format方法,根据文档,它将允许您指定源和目标配置文件。 它看起来像这样:

 if img.colorspace == Magick::CMYKColorspace img.add_profile(RGB_COLOR_PROFILE) end 

RE:在Centos 5.5上的LCMS,请务必从源代码下载并构建最新的LCMS(与yum install相比)。 否则,IM将无法在构建中找到LCMS,您会像我一样摸不着头脑,想知道为什么LCMS不包含在IM委托库中。