国庆节来了,给头像披面国旗吧

举报
darkpard 发表于 2022/10/02 14:18:05 2022/10/02
【摘要】 国庆节来了,公众号看到有人用python给头像披上了一面国旗。事实上只需要简单的应用一下PIL,就可以做到了,让我们也来做个简单的尝试。先到网上下一面国旗和一个头像。然后把它们用python打开。from PIL import Imageflag = Image.open('flag.png')figure = Image.open('figure.jpg')接下来,来看一下他们的尺寸。fl...

国庆节来了,公众号看到有人用python给头像披上了一面国旗。事实上只需要简单的应用一下PIL,就可以做到了,让我们也来做个简单的尝试。

先到网上下一面国旗和一个头像。

图片

图片

然后把它们用python打开。

    from PIL import Image
    flag = Image.open('flag.png')
    figure = Image.open('figure.jpg')

    接下来,来看一下他们的尺寸。

      flag.size, figure.size

      图片

      可以看到头像的尺寸比国旗要大很多,所以我们把国旗的尺寸放大一些,直到受到头像宽度的限制为止。

        w, h = 1440, int(720*1440/1080)
        flag = flag.resize((w, h))

        然后按这个尺寸从头像中截取精华部分,去掉头像图上下不是很重要的部分。

          x, y = 0, 1000
          figure.crop((x, y, x+w, y+h))

          图片

            figure = figure.crop((x, y, x+w, y+h))

            对国旗的颜色进行调整。我们只是简单地调整RGB中的红色部分,将中间的红色调整为无色,离中间越远,红色越明显,最边上为纯正的红色。

              for i in range(w):
                  for j in range(h):
                      flag.putpixel((i, j),
                      flag.getpixel((i, j))[:-1] + (int(abs(i - w / 2) / w * 2 * 255), ))

              改变颜色后的国际就不贴出来了,也许不适合张贴出来。

              然后把这面改变颜色的国旗披到头像上就可以了。

                figure.paste(flag, (0, 0), flag)
                figure

                图片

                【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
                • 点赞
                • 收藏
                • 关注作者

                评论(0

                0/1000
                抱歉,系统识别当前为高风险访问,暂不支持该操作

                全部回复

                上滑加载中

                设置昵称

                在此一键设置昵称,即可参与社区互动!

                *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

                *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。