python实现图片插入文字
本文实例为大家分享了python图片插入文字的具体代码,供大家参考,具体内容如下
问题
如何在图片中插入大量文字并且自动换行
效果
原始图
注明
若需要写入中文请使用中文字体
实现方式
fromPILimportImage,ImageDraw,ImageFont classImgText: font=ImageFont.truetype("micross.ttf",24) def__init__(self,text): #预设宽度可以修改成你需要的图片宽度 self.width=100 #文本 self.text=text #段落,行数,行高 self.duanluo,self.note_height,self.line_height=self.split_text() defget_duanluo(self,text): txt=Image.new('RGBA',(100,100),(255,255,255,0)) draw=ImageDraw.Draw(txt) #所有文字的段落 duanluo="" #宽度总和 sum_width=0 #几行 line_count=1 #行高 line_height=0 forcharintext: width,height=draw.textsize(char,ImgText.font) sum_width+=width ifsum_width>self.width:#超过预设宽度就修改段落以及当前行数 line_count+=1 sum_width=0 duanluo+='\n' duanluo+=char line_height=max(height,line_height) ifnotduanluo.endswith('\n'): duanluo+='\n' returnduanluo,line_height,line_count defsplit_text(self): #按规定宽度分组 max_line_height,total_lines=0,0 allText=[] fortextinself.text.split('\n'): duanluo,line_height,line_count=self.get_duanluo(text) max_line_height=max(line_height,max_line_height) total_lines+=line_count allText.append((duanluo,line_count)) line_height=max_line_height total_height=total_lines*line_height returnallText,total_height,line_height defdraw_text(self): """ 绘图以及文字 :return: """ note_img=Image.open("001.png").convert("RGBA") draw=ImageDraw.Draw(note_img) #左上角开始 x,y=0,0 forduanluo,line_countinself.duanluo: draw.text((x,y),duanluo,fill=(255,0,0),font=ImgText.font) y+=self.line_height*line_count note_img.save("result.png") if__name__=='__main__': n=ImgText( "1234567890"*5) n.draw_text()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。