文章目录
题目
第0000题
将你的 QQ 头像(或者微博/信头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。 类似于图中效果。
参考代码
from PIL import Image, ImageDraw, ImageColor, ImageFont
def add_num(img):
draw = ImageDraw.Draw(img)
font1 = ImageFont.truetype('/System/Library/Fonts/Apple Symbols.ttf', size=40)
fillcolor = ImageColor.colormap.get('red')
width, height = img.size
draw.text((width-30, 0), '1', font=font1, fill=fillcolor)
#在新建对象上的(width-30, 0)处开始画红色的“1”
img.save('result.jpg', 'jpeg')
return 0
if __name__ == '__main__':
image = Image.open('test.jpg')
add_num(image)
代码分析
PIL(Python Image Library),Python平台的图像处理标准库。
- 打开图片
Image.open()
- 保存图片
img.save()
- 获取图片尺寸
width, height = img.size
ImageDraw模块提供图像对象的简单2D绘制。
- 创建Draw对象
draw = ImageDraw.Draw(img)
ImageFont模块的truetype函数
- 使用方法:
ImageFont.truetype(file,size)
- 作用:加载一个TrueType或者OpenType字体文件,并且创建一个字体对象。这个函数从指定的文件加载了一个字体对象,并且为指定大小的字体创建了字体对象。
ImageColor
- PIL.ImageColor 包含两个将字符串转换为颜色值的函数 getrgb() 与 getcolor().
- 颜色名称作为参数传入, 允许的名称定义在 PIL.ImageColor.colormap 中