当尝试使用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混合正方形。
也可以对多个图像文件(pyvips.Image.new_from_file
)进行合成,但是,由于以下原因,使用上面生成的图像之一失败了:
pyvips.error.Error: unable to call composite
composite: images do not have same numbers of bands
即使所有图像的bands
返回4
。
我用错了吗? 感谢您的帮助!
答案 0 :(得分:2)
您的black() + (1, 2, 3, 4)
将制作一个四波段图像,其中interpretation
设置为multiband
。 composite
会将其解释为具有三个额外Alpha通道的单色图像(也许不是最好的猜测)。
您需要将解释设置为sRGB。您无需将黑色的bands
设置为4,+
的RHS会自动将其覆盖。
尝试:
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')
制作:
相同的技巧可以解决将黑色与图像文件合成的问题。