Python帮你微信头像任意添加装饰别再@微信官方了

@微信官方

昨天朋友圈刷爆了@微信官方的梗,从起初的为头像添加国旗,到最后的各种Book思议的需求…而我呢?@了辣么辣么多的奥特曼,结果还是加班到12点多…最后想想,人还是得靠自己吧,@我自己吧…

昨天最近每晚加班回家都凌晨了,昨晚因为太累没更新,今天再不更新感觉有点太对不起大家,所以想想今天就学着@微信官方,用Python给我们的微信头像添加国旗吧!

说说上篇文章

上篇文章如何把图片变得炫酷多彩,Python教你这样实现!,其实也是讲关于图片拼接的内容,只是有些朋友私下微信和我说,分块加载的方式不够好看,看着像是因为网速不好而一点点显示的效果。其实,文章只是给大家提供一个思路,你可以根据自己的算法去优化图片内容的加载方式,比如这样随即加载的模式:

当然你还可以转圈等等…

很多朋友问,Python应该怎么学习才上手快。其实学编程不管什么语言都是如出一辙的方式,多练习勤动手!当你不知道该写什么的时候,自己给自己找一点练习的idea,相信你的python会学的更快且更有趣…

头像添加国旗

今天微信添加国旗的活动,最终我也不知道@微信官方到底有没有用,上班一天忙着填坑,没什么时间玩手机。到时看朋友发有的链接可以给微信加头像,但晚上发现链接失效了。想想既然上篇文章做了关于图片剪裁粘贴的文章,为何不用Python给自己的头像添加一个国旗呢?

图片堆叠

python默认创建的图片都是矩形的,这样直接把矩形图片加到微信的头像上,实在太丑了!就比如搜到的一篇文章:

通过Python给头像加国旗,10多行代码搞定,就别@官方了

这种添加没毛病,但不觉得有点丑么…该怎么做才能美化呢?先来看看效果图:

大家觉得以上两种图片,哪个梗好看呢?哈哈…

特效分析

看似两张图差别不太,其实技术处理上,相差还是很多的。

首先,我们准备一张用来添加的图标,就像这样:

程序支持你添加任意的图标来绘图,只需要更换icon.jpg的名字即可,比如我换成东京食尸鬼的金木,是不是很炫酷:

其次,最外层不起眼的一圈留白,为了达到这个效果,我们需要先创建一个白色的背景画布,然后将我们的头像居中粘贴上去。

之后,是如何生成一个圆形的图片,大家知道默认创建的图片都是矩形的,我们需要通过RGBA的透明度,将多余的边角进行透明处理。

最终代码如下:

# -*- coding: utf-8 -*-
# @Author : 王翔
# @WeChat : King_Uranus
# @公众号 : 清风Python
# @Date  : 2019/9/23 23:08
# @Software : PyCharm
# @version :Python 3.7.3
# @File  : NationalFlag.py
import os
import argparse
from PIL import Image
BasePath = os.path.dirname(os.path.realpath(__file__))
class NationalFlag:
 def __init__(self):
  self.border = 30
  self.user_picture_size=None
  self.picture, self.picture_size = self.sharpe_image(args.picture.replace('\\', '/'), 'user_picture')
  self.icon, self.icon_size = self.sharpe_image(os.path.join(BasePath, 'icon.png'))
 def sharpe_image(self, picture_path, img_type=None):
  image = Image.open(picture_path).convert("RGBA")
  size = min(image.size)
  if not img_type:
   size = 240
  image = image.resize((size, size), Image.ANTIALIAS)
  reset_picture = self.blank_image(size, img_type)
  if not img_type:
   pimage = image.load() # 像素的访问对象
   preset_picture = reset_picture.load()
   r = float(size / 2) # 圆心横坐标
   r3 = int(size // 2)
   for i in range(size):
    for j in range(size):
     lx = abs(i - r) # 到圆心距离的横坐标
     ly = abs(j - r) # 到圆心距离的纵坐标
     l = (pow(lx, 2) + pow(ly, 2)) ** 0.5 # 三角函数 半径
     if l < r3:
      preset_picture[i - (r - r3), j - (r - r3)] = pimage[i, j]
  else:
   reset_picture.paste(image, (self.border, self.border))
  return reset_picture, size
 def blank_image(self, size, img_type=None):
  if img_type:
   new_size = size + self.border * 2
   color_type = (255, 255, 255)
   return Image.new('RGBA', (new_size, new_size), color_type)
  else:
   color_type = (255, 255, 255, 0)
   return Image.new('RGBA', (size, size), color_type)
 def final_paste(self):
  r, g, b, a = self.icon.split()
  locate = self.picture_size+ self.border//2 -self.icon_size
  self.picture.paste(self.icon, (locate, locate), mask=a)
  self.picture.save('result.png')
def run():
 main = NationalFlag()
 main.final_paste()
if __name__ == '__main__':
 parser = argparse.ArgumentParser()
 parser.add_argument("-p", "--picture", required=True,
      help="请填写所需制作的图片全路径")
 args = parser.parse_args()
 run() 

程序打包

这么好玩的功能,我们当然需要打包后方便传递给朋友们使用喽…头像图片通过-p 传输至程序,想要替换的装饰秩序保证文件名为icon.jpg即可。是不是很方便?还不去下载吗?公众号输入关键字:头像 即可获取exe文件及代码….

总结

以上所述是小编给大家介绍的Python帮你微信头像任意添加装饰别再@微信官方了,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • 利用python实现微信头像加红色数字功能

    通过Python实现将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 实现过程: 准备两张图片如下:   使用PIL图像处理库,导入moudle from PIL import Image from PIL import ImageFont from PIL import ImageDraw def white_to_transparent(img): img=img.convert('RGBA') #返回一个转换后的图像的副本 dat

  • Python帮你微信头像任意添加装饰别再@微信官方了

    @微信官方 昨天朋友圈刷爆了@微信官方的梗,从起初的为头像添加国旗,到最后的各种Book思议的需求-而我呢?@了辣么辣么多的奥特曼,结果还是加班到12点多-最后想想,人还是得靠自己吧,@我自己吧- 昨天最近每晚加班回家都凌晨了,昨晚因为太累没更新,今天再不更新感觉有点太对不起大家,所以想想今天就学着@微信官方,用Python给我们的微信头像添加国旗吧! 说说上篇文章 上篇文章如何把图片变得炫酷多彩,Python教你这样实现!,其实也是讲关于图片拼接的内容,只是有些朋友私下微信和我说,分块加载的方

  • 你还在@微信官方?聊聊Python生成你想要的微信头像

    今天早上@微信官方突然火了, 一句"请给我一面国旗@微信官方" 刷遍朋友圈. 到底是什么呢? 我们先来看看朋友圈 当然,这只是零零散散的部分截图, 看到这些,一股热血洒了出来, 我兴致勃勃的准备发朋友圈, 请神仙微信官方给我也换个头像, 就在这时,我手贱, 一不小心刷了下朋友圈, 结果: 我,好(lei)高(ge)兴(qu)啊! 原来是套路啊, 后来仔细想想,也是, 微信官方 哪有那么多时间给我换头像. 当然, 这也激发了我的程序员思维, 别人能做,我为啥不能? 说干就干,拿起Pyth

  • Python 批量验证和添加手机号码为企业微信联系人

    目录 需求 源码 运行 需求 批量验证和添加手机号码为企业微信账号的联系人 源码 import tkinter as tk import pyautogui as pg import tkinter.messagebox as msgbox def setpos(): global x,y try: x,y = eval(tEntry.get()) except: pass pg.click(x-150,y) pg.typewrite('1') pg.moveTo(x,y,duration=0.

  • Python帮你解决手机qq微信内存占用太多问题

    目录 导语: 正文: glob 模块 glob方法 zlib.crc32 去重复 总结 导语: 哈喽,哈喽~大家有没有遇到过这种情况,手机用着用着没有内存了,一到设置里面一看. 微信和 QQ 10G! 啊这.....就离谱!好说,好说,设置中都有一个清除数据的功能,一键下去内存暂时都回来了,但是宝,你确定你微信和QQ中的信息都没用吗? ​下面能小编就用 Python 写个删除重复文件的脚本清理这些微信和QQ空间.确保在清除内存的时候,你的重要信息还在. 正文: glob 模块 glob 模块非常

  • 详解iOS 裁剪圆形图像并显示(类似于微信头像)

    本文主要讲解如何从照片库选择一张照片后将其裁剪成圆形头像并显示,类似于微信头像那种模式. 本文的方法也适用于当时拍照获取的图像,方法类似,所以不再赘述. 本文主要是在iOS 10环境下使用,此时如果要使用使用系统照片库.照相机等功能需要授权,授权方法如下: 右键点击工程目录中的"Info.plist文件-->Open As -->Source Code",打开复制以下你在应用中使用的隐私权限设置(描述自己修改): <key>NSVideoSubscriberAc

  • Python实现好友全头像的拼接实例(推荐)

    微信好友全头像 话不多说,直接上代码 import itchat import math import PIL.Image as Image import os itchat.auto_login() friends = itchat.get_friends(update=True)[0:] user = friends[0]["UserName"] num = 0 for i in friends: img = itchat.get_head_img(userName=i["

  • 使用Python向DataFrame中指定位置添加一列或多列的方法

    对于这个问题,相信很多人都会很困惑,本篇文章将会给大家介绍一种非常简单的方式向DataFrame中任意指定的位置添加一列. 在此之前或许有不少读者已经了解了最普通的添加一列的方式,如下: import pandas as pd feature = pd.read_csv("C://Users//Machenike//Desktop//xzw//lr_train_data.txt", delimiter="\t", header=None, usecols=[0, 1

  • 无需压缩软件,用python帮你操作压缩包

    写在之前 压缩包是互联网上软件发布的标准格式,同时对于系统管理很有用处.当我们需要将多份文件发送给别人的时候,最好通过压缩包的形式发送,还有在备份某些文件的时候,为了减少磁盘空间的占用,也需要对备份的数据进行压缩. Python 中有一系列对压缩包进行处理的工具,包括创建压缩包,解压压缩包以及获取压缩包中的文件列表等,今天的文章,我们就来学习一下与压缩包相关的 Python 标准库. 管理 zip 压缩包 在大多数情况下,我们在 Windows 下使用 zip 进行压缩,在 Linux 下使用

  • 如何利用Python给自己的头像加一个小国旗(小月饼)

    今年国庆节也是中秋节,首先祝大家节日快乐,本文我们使用 Python 来给自己的头像加一个小国旗或小月饼. 国旗 对于国旗,我们可以使用 Python 来画一个,用到的 Python 库是大家比较熟悉的 turtle,我们的五星红旗组成元素包括:红底.一颗黄的主星和四颗黄的副星. 首先画一个长方形的红底,代码实现如下: turtle.setup(600, 400, 0, 0) turtle.bgcolor("red") 效果如下: 接着画一颗主星,代码实现如下: turtle.fill

随机推荐