2

尝试使用 pyvips 2.1.5 合成图像时:

import pyvips

i1 = pyvips.Image.black(100, 100, bands=4) + (255, 0, 0, 128)
i2 = pyvips.Image.black(10, 10, bands=4) + (0, 255, 0, 128)
i1.composite(i2, 'over').write_to_file('output.png')

它输出大小为 10x10px 的绿色平方,而不是预期的 100x100px alpha 混合平方。

输出.png

pyvips.Image.new_from_file此外,合成多个图像文件 (

pyvips.error.Error: unable to call composite
composite: images do not have same numbers of bands

即使所有图像都bands返回4

我用错了吗?谢谢你的帮助!

4

1 回答 1

3

black() + (1, 2, 3, 4)将制作一个interpretation设置为的四波段图像multiband。这将被解释composite为具有三个额外 alpha 通道的单色图像(也许不是最好的猜测)。

您需要将解释设置为 sRGB。您不需要将bandson black 设置为 4,它会被+.

尝试:

import pyvips

i1 = (pyvips.Image.black(100, 100) + (255, 0, 0, 128)).copy(interpretation="srgb")
i2 = (pyvips.Image.black(10, 10) + (0, 255, 0, 128)).copy(interpretation="srgb")
i1.composite(i2, 'over').write_to_file('output.png')

制作:

结果图像

同样的技巧应该可以解决您将黑色与图像文件合成的问题。

于 2019-04-02T06:21:19.613 回答