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

9
我一直在使用以下内容进行颜色转换:
    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)

颜色已经改善了,但还是有些偏差。


我不了解Ruby和Rmagick,但ImageMagick本身理论上可以处理色彩配置文件。(只要我记得起来,CMYK一直是IM的痛点)。您是否在应用配置文件时遇到问题,或者使用配置文件没有改变任何内容?如果有,传入素材使用什么颜色配置文件(如果有)? - Pekka
这些传入的文件在这种情况下确实有一个配置文件。我会进一步调查。我对色彩配置(比如在哪里下载它们)感到困惑,ICC网站并没有提供太多帮助。谢谢。 - The Who
空间不足了...请看下面。 - Pekka
5个回答

11

感谢 Pekka,你提示了我答案(+1)。

必须使用已安装Little Color Management System (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 }

有没有想法在ImageMagick 6.8.0中找到或安装颜色配置文件?我使用Homebrew安装了它,但在我的OS X上找不到任何*.icm文件。感谢您非常有帮助的答案! - Javier
2
在 Mac OS X 上,您可以执行“brew install imagemagick --with-little-cms”以获取使用 lcms 编译的 imagemagick。在所有平台上,您都可以执行:convert -list configure。如果正确安装,则 DELEGATES 行应包含 lcms。 - Christoph Eberhardt

4

我花了很长时间尝试使用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文件,网址为:http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html 唯一我无法解决的问题是如何保持透明度。我想使用的EPS具有透明背景,但被转换成了白色。不幸的是,我不能像image.transparent("white")这样做,因为我想保留图像中的白色。
如果取消上面代码中的puts image.alpha?注释,则返回false
有人知道我正在尝试的是否可能在当前版本的RMagick中实现吗?我开始怀疑是否支持导入带有透明度的CMYK EPS。
谢谢!

我的建议是在一个新的问题中询问透明度问题。 - Mark Ransom
谢谢Mark。现在已经在https://dev59.com/YVnUa4cB1Zd3GeqPcKCQ完成了,保持透明背景。 - Michael Jerome
從英文翻譯成中文的程式設計相關內容,請僅返回已翻譯的文本:只需編輯此內容,以刪除問題部分,以便剩下的是對該問題的答案。 - Kate Gregory
Mac的ICC颜色配置文件可以在此处找到:http://www.adobe.com/support/downloads/thankyou.jsp?ftpID=4074&fileID=3792 - thomax
那个双等号应该改成单等号 - image.colorspace = Magick::SRGBColorspace - Arran Scott

2
在这种情况下,传入的文件确实有一个配置文件。我会进一步调查。我在颜色配置文件方面有些困惑(例如在哪里下载它们?ICC网站没有提供太多帮助)。你并不是唯一一个感到困惑的人;我也是。在ImageMagick网站上有一些讨论可能值得筛选:点击此处至少在当时我理解的是,当可以识别所使用的配置文件(例如监视器配置文件)或将其嵌入文件中时(在Photoshop中至少可以为TIFF和JPG执行此操作),就可以正确使用配置文件。请参阅此处:点击此处。祝你好运。

快要成功了,我想。看起来需要使用 --with-lcms=yes 编译 Image Magick 并安装 LCMS 库。等我有时间了我会试一下。 - The Who

2
我发现 The Who 的命令行解决方案非常好,但是 RMagick 解决方案对我无效。为了让它在 RMagick 中有效,我不得不使用 Magick::Image#add_format 方法,根据文档的说明,这将允许您指定源和目标配置文件。它看起来像这样:
if img.colorspace == Magick::CMYKColorspace
  img.add_profile(RGB_COLOR_PROFILE)
end 

1

关于在Centos 5.5上使用LCMS,请确保从源代码下载并构建最新的LCMS(而不是使用yum安装)。否则,IM在构建时将无法找到LCMS,你会像我一样感到困惑,不知道为什么LCMS没有包含在IM代理库中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接