将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果
#coding=utf-8
from PIL import Image,ImageDraw,ImageFont,ImageFilter
import cv2
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
#字体的位置,不同版本的系统会有不同
font_path = "30213021386.ttf"
pic_path = "001.png"#原始图像
pic_savepath="001_RES.png"# 处理后图像
def gene_message_num(pic_path,message_num,fontcolor):
'''
@pic_path:原始头像图片的位置
@message_num:未读消息的数目
@fontcolor:显示消息数目的字体颜色
'''
image = Image.open(pic_path)
size = image.size
width,height = size #原始图片的宽和高
font = ImageFont.truetype(font_path,30) #字体
draw = ImageDraw.Draw(image) #创建画笔
text = str(message_num)
font_width, font_height = font.getsize(text)
draw.text((width - font_width, 0),text,\
font=font,fill=fontcolor) #填充数字,位置在右上角
image.save(pic_savepath) #保存图片
# 测试
message_num = 4
fontcolor = (255,0,0)#红色
gene_message_num(pic_path,message_num,fontcolor)
img1=cv2.imread('001.png')
img2=cv2.imread('001_RES.png')
# cv2读取的图像数据为BGR [:,:,::-1] :表示第三个维度逆序
''' 数据示例
[[[216 220 215]
[215 219 214]
[214 218 213]
...
[215 220 219]
[216 221 220]
[220 225 224]]
[[213 217 212]
[215 219 214]
[216 220 215]
...
[213 218 217]
[212 217 216]
[212 217 216]]
[[211 214 212]
[215 218 216]
[219 222 220]]]
'''
plt.subplot(221)
plt.imshow(img1[:,:,::-1]) #
plt.title('cv2读取原图')
plt.subplot(222)
plt.imshow(img2[:,:,::-1])
plt.title('cv2读取处理后图')
img3 = Image.open("001.png")
img4=Image.open("001_RES.png")
plt.subplot(223)
plt.imshow(np.array(img3))
plt.title('PIL读取原图')
plt.subplot(224)
plt.imshow(np.array(img4))
plt.title('PIL读取处理后图')
plt.savefig('res.png')
PIL:Image 和 cv2简单比较
- 打开
img1 = Image.open("1.jpg")
img2 =cv2.imread("1.jpg")
- 长宽
w, h = img1.size
w, h = img2.shape
- Resize
ReSImg1 = img1.resize((224,224))
ReSImg2 =cv2.resize(img2,(h,w))
- 保存
img1.save(path)
cv2.imwrite(path,img)
本文分享 CSDN - wbaolong。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/192649/blog/4735823