pyvips 图像合成没有按预期工作
pyvips Image composite not working as expected
当尝试使用 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
return 4
.
我用错了吗?
感谢您的帮助!
您的 black() + (1, 2, 3, 4)
将制作一个四波段图像,其中 interpretation
设置为 multiband
。这将被 composite
解释为具有三个额外 alpha 通道的单色图像(可能不是最好的猜测)。
您需要将解释设置为sRGB。您不需要将 bands
on black 设置为 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')
制作:
同样的技巧应该可以解决您将黑色与图像文件合成的问题。
当尝试使用 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
return 4
.
我用错了吗? 感谢您的帮助!
您的 black() + (1, 2, 3, 4)
将制作一个四波段图像,其中 interpretation
设置为 multiband
。这将被 composite
解释为具有三个额外 alpha 通道的单色图像(可能不是最好的猜测)。
您需要将解释设置为sRGB。您不需要将 bands
on black 设置为 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')
制作:
同样的技巧应该可以解决您将黑色与图像文件合成的问题。