【问题标题】:pyvips Image composite not working as expectedpyvips 图像合成未按预期工作
【发布时间】:2019-04-01 17:07:47
【问题描述】:

尝试使用 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

我用错了吗? 感谢您的帮助!

【问题讨论】:

    标签: python vips


    【解决方案1】:

    您的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')
    

    制作:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-24
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 2020-03-15
      • 2017-01-15
      相关资源
      最近更新 更多