ruby - 使用 RMagick 合成处理过的图像

标签 ruby image imagemagick image-manipulation rmagick

我正在尝试从两个原始图像创建一个合成图像,一个背景和一个叠加层,我使用 RMagick 进行操作,如下所示:

background = ImageList.new("foo.png")
overlay_original = ImageList.new("bar.png")
overlay_resized = overlay_original.resize_to_fit(400,400)
overlay_cropped = overlay_resized.crop(NorthWestGravity, 400, 200)

new_image = ImageList.new
new_image = new_image.composite_layers(background)
new_image = new_image.composite_layers(overlay_cropped)

当我这样做时,出现以下错误:ArgumentError: no images in this image list

当我试图检查 backgroundoverlay_cropped 图像列表的长度时(background.lengthoverlay_cropped.length ) 它告诉我 background 图片列表有 1 张图片,但是 overlay_cropped 没有图片:

NoMethodError: bar.png PNG 640x1096=>400x200 400x400+0+0 DirectClass 8-bit:Magick::Image 的未定义方法长度

关于我做错了什么的任何想法?我猜答案很明显。

最佳答案

通过将其更改为以下内容解决了问题:

marketing_image = marketing_image.composite(background, NorthWestGravity, 0, 0, OverCompositeOp)
marketing_image = marketing_image.composite(overlay_cropped, NorthWestGravity, 327, 126, OverCompositeOp)

关于ruby - 使用 RMagick 合成处理过的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25584020/

相关文章:

ruby-on-rails - 特殊字符 & 被打印为 &

android - 在android中拖放图像

ruby-on-rails - 使用 rails/webpacker 响应测试设置

ruby 弦使用rust 并再次使用rust

html - 100% 宽度背景图像

css - 在 Linux 系统上找不到图像

imagemagick - 如何调整图像大小以使最长的尺寸更短或等于一个数量?

svg - 自动将 SVG 转换为 Android 可用的 PNG

java - 从java调用imagemagick不起作用,直接调用有效

ruby-on-rails - Ruby 和 RoR 项目倾向于使用 Sass 而不是 LESS 的原因是什么?