Python pyvips图像合成未按预期工作
尝试使用pyvips 2.1.5合成图像时:Python pyvips图像合成未按预期工作,python,vips,Python,Vips,尝试使用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') 它输出10x100px大小的绿色平方,而不是预期的100x100pxα混
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')
它输出10x100px大小的绿色平方,而不是预期的100x100pxα混合平方
另外,合成多个图像文件(pyvips.image.new_from_file
)似乎也可以,但使用上面生成的图像之一进行合成失败,原因是:
pyvips.error.Error: unable to call composite
composite: images do not have same numbers of bands
即使所有图像的波段
返回4
我用错了吗?
谢谢你的帮助 您的black()+(1,2,3,4)
将生成一个四波段图像,并将解释设置为多波段
。这将被composite
解释为带有三个额外alpha通道的单色图像(可能不是最佳猜测)
您需要将解释设置为sRGB。您不需要将黑色的波段设置为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')