您的位置:首页 > 移动开发 > 微信开发

每天一个小程序——第 0000 题:添加角标数字

2016-09-12 11:25 260 查看
开新坑,找到一个Python练习册:

https://github.com/Yixiaohan/show-me-the-code

题目练手不错。

第0000题:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。

# -*- coding: utf-8 -*-
"""
第 0000 题:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。
"""
from PIL import Image, ImageFont, ImageDraw

def img_add_num(size=100,num=1):
# 打开图片
im = Image.open('my.jpg')
# 读取图片的大小
w, h = im.size
# truetype(字体(优先读取文件位置,没有则去系统字体库中查询),大小(要求为int))
my_font = ImageFont.truetype('ALGER.TTF', size)
# 定义一个实例(或者说画布),意思是在im上开始作画
my_draw = ImageDraw.Draw(im)
# text((横坐标,纵坐标),内容,字体,颜色)
# hint:这边的num需要是一个可迭代的值,所以需要从int转换成str。
my_draw.text((w*4//5,h-(h*4//5)), str(num), font = my_font, fill = 'red')
# 保存图片
im.save('my_2.jpg')

if __name__ == '__main__':
img_add_num(50,5)

# 网上找的答案:
# def img_add_num(num=1):

#     img = Image.open('my.jpg')
#     w, h = img.size
#     print (w, h)
#     font = ImageFont.truetype('arial.ttf', w // 10)
#     draw = ImageDraw.Draw(img)
#     draw.text((w*3//4, 50), str(num), font=font, fill='yellow')
#     img.save('img2.jpg')


效果如下:





*这边还考虑了另一个方式就是采用图片叠加的方式来做

def image_com():
m1 = Image.open('num.png')
m2 = Image.open('my.jpg')
# 往m2中插入m1,坐标可以是一个点,也可以是一个方块,如果是方块,尺寸要和被插入的图片一致!
m2.paste(m1,(1000,50))
# m2.paste(m1,(450,450,500,500))
m2.save("0000_method_1.jpg")

if __name__ == '__main__':
image_com()


效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐