为什么我的图像变成方形PIL?

问题描述

因此,当我运行这段代码时,output.png变成一个圆(应该发生),但是当它粘贴到背景时,由于某种原因它变成了一个正方形。我想知道为什么会这样。

output.png

level.png

  
  mask = Image.open('mask.png').convert('L')

  output = ImageOps.fit(img,mask.size,centering=(0.5,0.5))
  output.putalpha(mask)

  output.save('output.png')

  bg = Image.open("background.png")
  bg.paste(output,(390,50))
  bg.save("level.png")

解决方法

Image.paste不适用于粘贴图像(output)中的Alpha通道,但是您可以为mask指定paste()参数(请参阅:{{3} })直接:

mask = Image.open('mask.png').convert('L')
output = ImageOps.fit(img,mask.size,centering=(0.5,0.5))
bg = Image.open("background.png")
bg.paste(output,(390,50),mask=mask)
bg.save("level.png")

也无需在output图像中添加Alpha。