如何使用Ruby Vips高效地创建纯色背景图像



我想使用Ruby Vips提供的方法创建一个给定大小的纯色背景画布。现在,我可以这样做,就像这样:

canvas = Vips::Image.black(600, 600).ifthenelse([0,0,0], [252, 186, 3])

然而,必须创建一个黑色图像,然后以这种方式逐像素应用颜色,这似乎很奇怪。有没有更好或更有效的方法来实现这一点?

如果您试图匹配现有图像,可以使用new_from_image:

y = x.new_from_image [1, 2, 3]

生成从x复制大多数属性的图像,但每个像素值都被[1, 2, 3]替换。

new_from_image的来源展示了如何从头开始高效地制作图像:

def new_from_image value
pixel = (Vips::Image.black(1, 1) + value).cast(format)
image = pixel.embed 0, 0, width, height, extend: :copy
image.copy interpretation: interpretation, xres: xres, yres: yres,
xoffset: xoffset, yoffset: yoffset
end

因此:

  • 制作一个像素的黑色图像
  • 将常数相加
  • 转换为所需格式(uint8、double等(
  • 展开到所需大小
  • 设置元数据,如分辨率、解释等

相关内容

  • 没有找到相关文章

最新更新