半透明图像枕头

Half transparent image Pillow

如何使图像像 dank memer 命令一样半透明。我一直在使用 putalpha,因为我在寻找解决方案时在 Internet 上找到了它,但它没有用。我正在使用枕头。

代码:

class Image_Manipulation(commands.Cog, name="Image Manipulation"):
    def __init__(self, bot:commands.Bot):
        self.bot = bot

    @commands.command(aliases=["Clown","CLOWN"])
    async def clown(self, ctx, user: nextcord.Member = None):
        if user == None:
            user = ctx.author
        
        clown = Image.open(os.path.join("Modules", "Images", "clown.jpg"))

        useravatar = user.display_avatar.with_size(128)
        avatar_data = BytesIO(await useravatar.read())
        pfp = Image.open(avatar_data)
        pfp = pfp.resize((192,192))
        pfp.putalpha(300)
        if pfp.mode != "RGBA":
            pfp = pfp.convert("RGBA")

        clown.paste(pfp, (0,0))
        clown.save("clown_done.png")

        await ctx.send(file = nextcord.File("clown_done.png"))
        
def setup(bot: commands.Bot):
    bot.add_cog(Image_Manipulation(bot))

dank memer 命令示例: https://imgur.com/a/ZDNyKsG

您想要达到的效果称为两张图片的平均值PIL.Image.blend 允许获得两个图像的 加权平均值 。用法示例:

from PIL import Image
im1 = Image.open('path/to/image1')
im2 = Image.open('path/to/image2')
im3 = Image.blend(im1, im2, 0.5)
im3.save('path/to/outputimage')

其中 im1im2 是相同大小(宽 x 高)的图像,如果您希望一张图像有更多,您可以选择为 Image.blend 使用不同的第三个参数对结果图像的影响(0.0 导致 im1 的副本,1.0 导致 im2 的副本)