RMagick:将CMYK EPS转换为RGB PNG,保持透明背景

时间:2011-07-26 16:39:02

标签: transparency rgb rmagick eps cmyk

我花了很长时间尝试使用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。

谢谢!

1 个答案:

答案 0 :(得分:0)

你知道RMagick的 paint_transparent 命令吗?

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

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

<强>参数

  

颜色颜色名称或像素。

     

不透明度新的不透明度值,不透明度值或介于0和QuantumRange之间的数字。默认值为TransparentOpacity。

     

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

     

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

返回新图片

Magick API TransparentPaintImage

  

你看过这个有关railscasts的视频吗?   http://railscasts.com/episodes/374-image-manipulation?他用的是   github logo用于创建具有透明度的邮票。