2019-03-27 13:57:50 1980瀏覽
本篇文章扣丁學(xué)堂Python培訓(xùn)小編和喜歡Python開(kāi)發(fā)技術(shù)的小伙伴們分享一下Python開(kāi)發(fā)技術(shù):Python如何在圖片中插入大量文字且自動(dòng)換行,小編覺(jué)得有很好的參考價(jià)值,現(xiàn)在分享給小伙伴們,希望對(duì)小伙伴有所幫助。
問(wèn)題:
如何在圖片中插入大量文字并且自動(dòng)換行
效果:
原始圖:
效果圖:
注明:
若需要寫(xiě)入中文請(qǐng)使用中文字體
實(shí)現(xiàn)方式:
from PIL import Image, ImageDraw, ImageFont
class ImgText:
font = ImageFont.truetype("micross.ttf", 24)
def __init__(self, text):
# 預(yù)設(shè)寬度 可以修改成你需要的圖片寬度
self.width = 100
# 文本
self.text = text
# 段落 , 行數(shù), 行高
self.duanluo, self.note_height, self.line_height = self.split_text()
def get_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
for char in text:
width, height = draw.textsize(char, ImgText.font)
sum_width += width
if sum_width > self.width: # 超過(guò)預(yù)設(shè)寬度就修改段落 以及當(dāng)前行數(shù)
line_count += 1
sum_width = 0
duanluo += '\n'
duanluo += char
line_height = max(height, line_height)
if not duanluo.endswith('\n'):
duanluo += '\n'
return duanluo, line_height, line_count
def split_text(self):
# 按規(guī)定寬度分組
max_line_height, total_lines = 0, 0
allText = []
for text in self.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
return allText, total_height, line_height
def draw_text(self):
"""
繪圖以及文字
:return:
"""
note_img = Image.open("001.png").convert("RGBA")
draw = ImageDraw.Draw(note_img)
# 左上角開(kāi)始
x, y = 0, 0
for duanluo, line_count in self.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()
以上就是扣丁學(xué)堂Python在線學(xué)習(xí)小編給大家分享的Python如何在圖片中插入大量文字且自動(dòng)換行,希望對(duì)小伙伴們有所幫助,想要了解更多內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)咨詢。
想要學(xué)好Python開(kāi)發(fā)小編給大家推薦口碑良好的扣丁學(xué)堂,扣丁學(xué)堂有專業(yè)老師制定的Python學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時(shí)俱進(jìn)的Python視頻教程供大家學(xué)習(xí),想要學(xué)好Python開(kāi)發(fā)技術(shù)的小伙伴快快行動(dòng)吧??鄱W(xué)堂Python技術(shù)交流群:279521237。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】 【掃碼進(jìn)入Python全棧開(kāi)發(fā)免費(fèi)公開(kāi)課】
查看更多關(guān)于"Python開(kāi)發(fā)資訊"的相關(guān)文章>