PIL简介:
python平台事实上的图片处理标准库,功能强大,API简单易用
PIL安装:
pip install PIL
直接绘图插入文字
#!/usr/bin/env pythonfrom PIL import Image, ImageDraw, ImageFont, ImageFilter# 240 x 60:width = 60 * 4height = 60image = Image.new('RGB', (width, height), (255, 255, 255))# 创建Font对象:font = ImageFont.truetype('Arial.ttf', 36)# 创建Draw对象:draw = ImageDraw.Draw(image) text = '你要插入的文字' # 输出文字:for t in range(4): position =(60 * t + 10, 10) draw.text(position, text, font=font, fill="#000000", spacing=0, align='left') image.save('code.jpg', 'jpeg');
打开已有的图片插入文字
#!/usr/bin/env pythonfrom PIL import Image, ImageDraw, ImageFont, ImageFilterimage = Image.open('cat.jpg')# 创建Font对象:font = ImageFont.truetype('Arial.ttf', 36)# 创建Draw对象:draw = ImageDraw.Draw(image)text = '你要插入的文字'# 输出文字:for t in range(4): position =(60 * t + 10, 10) draw.text(position, text, font=font, fill="#000000", spacing=0, align='left') image.save('code.jpg', 'jpeg');
封装成方法
def insert_text(text, fone_type_file, font_size, im, position): ''' ** text 要插入的文字 ** fone_type_file 文字类型文件名称 ** font_size 文字大小 ** im 背景图片 ** position 要插入的位置 ''' datas = text.split('\n') data = '' if not datas: datas = [text] for d in datas: if not d: d = ' ' elif len(d) > 31: d1 = d[:30] + '\n' d2 = d[30:] d = d1 + ' \n'+ d2 data += (d +'\n') data += ' \n' data = data[:-1] dr = ImageDraw.Draw(im) font = ImageFont.truetype(fone_type_file, font_size) dr.text(position, data, font=font, fill="#000000", spacing=0, align='left') im.save("t.png") return im, len(datas)