【问题标题】:When pasting a reshaped image, why does it lose its shape?粘贴重塑后的图像时,为什么会变形?
【发布时间】:2021-07-25 15:31:21
【问题描述】:

我在 Python 3 中使用 Pillow。我想将一个方形图像重塑为圆形,然后将其粘贴到另一个图像上。

我的问题是,重塑正确,图像是一个圆形,但是当它粘贴到另一个图像上时,它又变成了一个正方形:

这是我的代码:

@client.command()
async def test(ctx):
    owms = Image.open("bg.jpg")
    asset = ctx.author.avatar_url_as(size = 128)
    data = BytesIO(await asset.read())
    img=Image.open(data).convert("RGB")
    npImage=np.array(img)
    h,w=img.size
    alpha = Image.new('L', img.size,0)
    draw = ImageDraw.Draw(alpha)
    draw.pieslice([0,0,h,w],0,360,fill=255)
    npAlpha=np.array(alpha)
    npImage=np.dstack((npImage,npAlpha))
    pfp = Image.fromarray(npImage)
    pfp.save("outpfp.png")
    owms.paste(Image.fromarray(npImage), (101, 67))
    owms.save("outlvl.jpg")
    await ctx.send(file = discord.File("outpfp.png"))
    await ctx.send(file = discord.File("outlvl.jpg"))

(我已经使输出既是圆形图像又是预期的原始输出。)

我寻求的解决方案是粘贴的图像是圆形而不是像上图那样的方形。

【问题讨论】:

    标签: python-3.x image-processing python-imaging-library


    【解决方案1】:

    唯一剩下的就是正确使用Image.paste中的mask参数。此外,不需要这个 NumPy 绕道仅用于添加 Alpha 通道。有Image.putalpha。这是最小化的代码(我省略了不和谐的东西):

    from PIL import Image, ImageDraw
    
    owms = Image.open('bg.jpg')
    img = Image.open('get/your/avatar/here').resize((128, 128))
    h, w = img.size
    alpha = Image.new('L', img.size, 0)
    draw = ImageDraw.Draw(alpha)
    draw.pieslice([0, 0, h, w], 0, 360, fill=255)
    img.putalpha(alpha)
    img.save('outpfp.png')
    owms.paste(img, (101, 67), mask=img)
    owms.save('outlvl.jpg')
    

    我得到以下输出:

    ----------------------------------------
    System information
    ----------------------------------------
    Platform:      Windows-10-10.0.16299-SP0
    Python:        3.9.1
    PyCharm:       2021.1.1
    Pillow:        8.2.0
    ----------------------------------------
    

    【讨论】:

      猜你喜欢
      • 2012-01-23
      • 2011-10-02
      • 2021-11-19
      • 2020-06-11
      • 2014-04-11
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      • 1970-01-01
      相关资源
      最近更新 更多