Python|把你喜欢的照片合成到微信头像!

缘起

轩轩小朋友一直在学习画画,前段时间画了张哪吒的图,看着着实让人喜欢

本来想直接换成微信头像的,又觉得有失个性,还是研究一下,怎么放到头像的右下角吧.

开工

把大象放进冰箱总共分几步呢

第一步:把两张图片都调整成方形

第二步:被合并的图片调整成圆形

第三步:两图合并

环境:

python:3.8.6

Pillow:8.0.1

Pillow就是PIL(Python Imaging Library)了,在Python3叫Pillow,这个之前在<< Python|图片灰化处理 >>里提过,是Python处理图片的不二选择.

安装:

pip install Pillow
  • 把两张图片都调整成方形

    原理就是,取出图片大小,以最小边的为准,从中间缩小

    from PIL import Image
    
    def crop_square(img):
    x, y = img.size
    center = (int(x/2), int(y/2))
    length = int(min(x, y)/2)
    left_top = (center[0] - length, center[1] - length)
    right_buttom = (center[0] + length, center[1] + length)
    new_img = img.crop(left_top + right_buttom)
    return new_img
  • 被合并的图片调整成圆形

    先打开图片,然后调成方形,再调整成圆形并保存

    def img_circle(img_path,cir_path):
    ima = Image.open(img_path).convert("RGBA")
    ima = crop_square(ima)
    size= ima.size
    r2  = size[0]
    r3  = int(r2/2)
    imb = Image.new('RGBA', (r3*2, r3*2))
    pima= ima.load() # 像素的访问对象
    pimb= imb.load()
    r   = float(r2/2) #圆心横坐标
    for i in range(r2):
        for j in range(r2):
            lx = abs(i-r) #到圆心距离的横坐标
            ly = abs(j-r) #到圆心距离的纵坐标
            l = (pow(lx,2) + pow(ly,2))** 0.5 # 三角函数 半径
            if l < r3:
                pimb[i-(r-r3),j-(r-r3)] = pima[i,j]
    imb.save(cir_path)
  • 两图合并

    注释的比较明白了,比较困难的是图片去背景花了一些时间

    def img_join(file_bg,file_front,end_png):
    #打开原始图片,切成方形,并调整大小
    img_bg  = crop_square(Image.open(file_bg)).resize((573,573))
    #打开上层图片并调整大小
    img_front = Image.open(file_front).resize((250,250))
    #上层图片合并到原始图片,并透明上层背景
    r, g, b, a = img_front.split()
    img_bg.paste(img_front, (323,323),mask=a)
    img_bg.save(end_png)

    使用

    准备两张图片,指定输出路径,走你.

    if __name__ == '__main__':
    base_name       = 'nezha'
    file_front      =f'./img/{base_name}.jpg'
    cir_file_name   =f'./img/cir_{base_name}.png'
    img_circle(file_front,cir_file_name)
    end_png         =f'./img/end_{base_name}.jpg'
    img_join(file_bg,cir_file_name,end_png)

    接入到公众号

    以为到这里就结束了吗?

    为了换个微信图像,需要从手机传一张图片到电脑,python合成,再传回手机,再去微信设置,似乎很繁琐,还不容易批量复制:妈妈想要怎么办,爷爷奶奶姥姥姥爷想要怎么办?技术就是生产力,怎样简化这个步骤呢?把这个功能放到微信公众号不就可以了吗,微信公众号发送一张图片,收到图片以后,处理再返回,直接微信保存,再设置头像,完美.

    点击最下面的 + 

    选择一张图片上传.

    然后回复相应的数字就可以了.

    得到图片以后再去个人中心设置.

    对了,顺便把姜子牙,大圣,还有疯狂动物城里的兔朱迪和狐尼克也加上了.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值