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

时间:2009-12-05 20:29:10

标签: ruby imagemagick rmagick

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

    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)

颜色更好,但仍然关闭。

5 个答案:

答案 0 :(得分: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 }

答案 1 :(得分: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 http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html

下载ICC文件

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

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

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

谢谢!

答案 2 :(得分:2)

  

在这种情况下,传入的文件可以   有个人资料。我会调查   多一点。我迷失了颜色   个人资料(比如我在哪里下载   他们?国际刑事法院网站没有多大帮助)

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

答案 3 :(得分:2)

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

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

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

答案 4 :(得分:1)

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