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

您可以直接从 Adob​​e 下载 ICC 文件,网址为http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html

我唯一不知道的是如何保持透明度。我要使用的 EPS 具有透明背景,正在变成白色。不幸的是,我不能做类似的事情image.transparent( "white" ),因为我想保持白色的图像中有白色。

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

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

谢谢!

4

1 回答 1

0

你知道 RMagick 的paint_transparent命令吗?

image.paint_transparent(color, opacity=TransparentOpacity, invert=false, fuzz=img.fuzz) -> image

说明将所有与颜色匹配的像素的不透明度值更改为不透明度指定的值。如果反转为真,则更改与颜色不匹配的像素。

论据

color颜色名称或像素。

opacity新的不透明度值,可以是不透明度值,也可以是介于 0 和 QuantumRange 之间的数字。默认值为透明不透明度。

invert如果为 true,则更改所有不是目标颜色的像素。

fuzz 默认情况下,像素必须完全匹配,但您可以通过传递正值来指定容差级别。

返回一个新图像

Magick API透明画图

你看过这个 railscasts http://railscasts.com/episodes/374-image-manipulation的视频吗?他使用 github 徽标创建了具有透明度的图章。

于 2013-10-05T21:14:29.373 回答