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

Ruby 使用RMagick将CMYK图像正确转换为RGB,ruby,imagemagick,rmagick,Ruby,Imagemagick,Rmagick,我一直在使用下面做一个颜色转换 if @image.colorspace == Magick::CMYKColorspace # @image.colorspace #=> CMYKColorspace=12 @image.colorspace = Magick::RGBColorspace @image = @image.negate end 它大约可以工作,但颜色亮度已关闭。事实上,我需要否定的形象留下了一个非常坏的味道 文档中提到

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

    if @image.colorspace == Magick::CMYKColorspace
      # @image.colorspace #=> CMYKColorspace=12
      @image.colorspace = Magick::RGBColorspace
      @image = @image.negate
    end
它大约可以工作,但颜色亮度已关闭。事实上,我需要否定的形象留下了一个非常坏的味道

文档中提到使用color_配置文件,但除此之外,我找不到太多

我现在正在努力

@image = @image.quantize(16777216, Magick::RGBColorspace)
颜色更好,但还是不太好


在本例中,传入的文件 有个人资料。我会调查的 再来一些。我迷路了 配置文件(比如我在哪里下载 他们?国际刑事法院网站帮不了什么忙)


你不是唯一一个困惑的人;我也是。ImageMagick网站上的一些讨论可能值得仔细研究:据我当时的理解,当使用的配置文件可以识别(例如监视器配置文件)或嵌入到文件中时(我认为至少可以在Photoshop中对TIFF和JPG这样做),正确使用配置文件是可能的。检查,例如,此:。祝你好运

谢谢佩卡,你向我透露了答案(+1)

必须使用已安装的进行ImageMagick编译。如果使用了安装程序或软件包,则可能已经存在这种情况。但我是从源代码处编译的。只需从源代码安装LCM并重建ImageMagick(
/configure;make;make install
)即可

在ImageMagick中,以下功能可以很好地再现准确的颜色:

将文件名-profile/PATH\u转换为\u 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解决方案不适合我

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

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

回复:Centos 5.5上的LCMS,请确保从源代码下载并构建最新的LCMS(相对于yum install)。否则,IM在构建时找不到LCM,你会像我一样挠头,想知道为什么IM代理库中不包含LCM。

我花了很长时间尝试使用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文件,网址为

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

如果我取消注释上述代码中的
put image.alpha?
,它将返回
false

有人知道我在当前版本的RMagick中所做的事情是否可行吗?因为我开始怀疑是否不支持导入具有透明度的CMYK EPSs


谢谢

我不知道Ruby和Rmagick,但ImageMagick本身可以处理颜色配置文件,至少在理论上是这样。(从我记事起,CMYK就一直是IM的痛点)。您是否在应用配置文件时遇到问题,或者使用配置文件不会改变任何事情?传入的材料有什么颜色的配置文件(如果有的话)?传入的文件,在这种情况下,有一个配置文件。我会再调查一些。我被彩色档案弄糊涂了(比如我在哪里下载它们?ICC网站帮不了什么忙)。谢谢,空间不够了。。。请看下面。我想是越来越近了。看起来需要使用
编译Image Magick--lcms=yes
并安装lcms库。当我有时间的时候,我会尝试一下。我的建议是在一个新的问题中询问透明度问题。谢谢马克。现在,我们已经在编辑这一部分中这样做了,以便将问题去掉,剩下的只是这个问题的答案。可以在这里找到Mac的颜色配置文件。双等应该是一个单-
image.colorspace=Magick::SRGBColorspace
知道在哪里可以找到或如何安装带有ImageMagick 6.8.0的颜色配置文件吗?使用自制软件安装,在my OS X上找不到任何*.icm文件。感谢您的回答!在Mac OS X上,您可以执行“brew安装imagemagick——使用little cms”以获得使用lcms支持编译的imagemagick。在所有平台上,您可以执行以下操作:convert-list configure如果安装正确,代理行应包含LCM