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

发布于 2024-11-26 16:43:08 字数 912 浏览 3 评论 0原文

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

谢谢!

I've spent a long time trying to go from a CMYK EPS to a RGB PNG using RMagick and Rails. Hopefully this will be of use to someone:

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

You can download the ICC files direct from Adobe at http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html

The only thing I haven't been able to suss is how to maintain transparency. The EPS I want to use has a transparent background which is being turned into white. Unfortunately I can't do something like image.transparent( "white" ) as I have white in the image that I want to keep as white.

If I uncomment the puts image.alpha? in the above code it returns false.

Does anyone know if what I'm trying to do is possible with the current version of RMagick, as I'm beginning to wonder if importing CMYK EPSs with transparency isn't supported.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

对岸观火 2024-12-03 16:43:08

你知道 RMagick 的 paint_transparent 命令吗?

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

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

参数

颜色颜色名称或像素。

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

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

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

返回新图像

Magick APITransparentPaintImage

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

do you know about the paint_transparent command for RMagick?

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

Description Changes the opacity value of all the pixels that match color to the value specified by opacity. If invert is true, changes the pixels that don't match color.

Arguments

color Either a color name or a pixel.

opacity The new opacity value, either an opacity value or a number between 0 and QuantumRange. The default is TransparentOpacity.

invert If true, changes all the pixels that are not the target color.

fuzz
By default the pixel must match exactly, but you can specify a tolerance level by passing a positive value.

Returns A new image

Magick API TransparentPaintImage

Have you seen this video of railscasts
http://railscasts.com/episodes/374-image-manipulation ? He uses the
github logo to create a stamp with transparency.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文