2011-07-26 109 views
4

我花了很长时间尝试使用RMagick和Rails从CMYK EPS转换为RGB PNG。希望这将是使用的人:RMagick:将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 

您也可以下载ICC文件从Adobe直接在http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html

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

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

有谁知道我想要做什么可能与当前版本的RMagick,因为我开始怀疑是否不支持导入CMYK EPS透明度。

谢谢!

+0

你有没有考虑过绘制页面而不是白色,然后将透明度设置为该颜色?电视使用“绿色屏幕”,而不是白色屏幕,因为绿色是不使用的颜色。 –

回答

0

您是否了解paint_transparent command for RMagick?

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

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

参数

颜色颜色名或像素。

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

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

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

返回新形象

Magick API TransparentPaintImage

你见过railscasts http://railscasts.com/episodes/374-image-manipulation的视频?他使用 github徽标来创建具有透明度的邮票。