项目中需要用python生成二维码,这里记录一下相关PIL相关操作。
RGBA问题:
需要将图片A粘贴到图片B上,之前没有注意透明度问题,A的背景是透明的,粘贴到B上后,A的周围是黑的。后来才发现是PIL的Image模块,调用open打开文件以后,需要convert转换为‘RGBA’模式,R:red G:green B:blue A:Alpha 色彩空间 透明度,设置一下图片的透明度即可。
图片的粘贴,文字的添加需要调用ImageDraw模块,首先打开背景图
img = Image.open(‘./test.png‘).convert(‘RGBA‘) drawImg = ImageDraw.Draw(img)
图片A粘贴到图片B上
Image.resize()函数来调整图片A的大小,然后用paste将A粘贴到B上,qr_bos为A在B上的坐标,(右上,左上,右下,左下)
drawImg.paste(img.resize((self.qr_box[2] - self.qr_box[0], self.qr_box[3] - self.qr_box[1])), self.qr_box)
在图片B上添加文字
# 获取图片宽度,字体的高度 t_p_w_3, t_p_h_3 = (self.width, 23) # 加载字体 t_3_font = ImageFont.truetype(‘msyh.ttf‘, 23) # 获取这段文字在图片上的长宽 t_p_w_3_t, t_p_h_3_t = drawBack.textsize(self.content_3, t_3_font) #居中 drawBack.text(((t_p_w_3 - t_p_w_3_t) / 2, (t_p_h_3 - t_p_h_3_t) / 2), self.content_3,fill=‘#535256‘, font=t_3_font)
原文地址:https://www.cnblogs.com/yuanhuikai/p/9029930.html
时间: 2024-10-18 12:51:54