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

The*_*Who 9 ruby rmagick imagemagick

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

    if @image.colorspace == Magick::CMYKColorspace
      # @image.colorspace #=> CMYKColorspace=12
      @image.colorspace = Magick::RGBColorspace
      @image = @image.negate
    end
Run Code Online (Sandbox Code Playgroud)

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

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

我现在正在努力

@image = @image.quantize(16777216, Magick::RGBColorspace)
Run Code Online (Sandbox Code Playgroud)

颜色更好,但仍然关闭.

The*_*Who 11

谢谢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 }
Run Code Online (Sandbox Code Playgroud)

  • 在Mac OS X上,您可以执行'brew install imagemagick --with-little-cms'来获得使用lcms支持编译的imagemagick.在所有平台上,您可以执行以下操作:convert -list configure如果正确安装,DELEGATES行应包含lcms (2认同)