我有一个图像(像那样:mask)和两个整数,它代表一个最终的图像宽度&高度。根据Wand的文档Open empty image:
with Image(width=200, height=100) as img:
img.save(filename='200x100-transparent.png')
这将导致透明背景的空图像。 现在,问题是:如何创建一个相同的空图像,但使用 mask 图像作为背景图案?
composite
CLI命令本身有以下运算符:
-tile repeat composite operation across and down image
但如何用魔杖实现同样的目标?
答案 0 :(得分:2)
好吧,在查看ImageMagick的Composite source code之后,很明显,Wand驱动的解决方案看起来应该是这样的:
with Image(width=x, height=y) as img:
for x in xrange(0, img.width, crop_mask_path.width):
for y in xrange(0, img.height, crop_mask_path.height):
img.composite_channel('default_channels', crop_mask_path, 'over', x, y)
img.save(filename='patterned_image.png')
答案 1 :(得分:0)
在我看来,构建标题迭代器是the best solution。然而,另一个 hackish 方法是调用tile:
协议,并允许内部ImageMagick方法处理组合。您将失去由DIY继承的控件,但在优化的IM系统上获得一些性能。
from wand.image import Image
from wand.api import library
with Image() as img:
# Same as `-size 400x400' needed by tile: protocol.
library.MagickSetOption(img.wand, 'size', '400x400')
# Prefix filename with `tile:' protocol.
img.read(filename='tile:rose.png')
img.save(filename='tile_rose.png')