Skip to content

Commit 79f61cb

Browse files
authored
Merge pull request #119 from Chinesehou97/title
图片文字不居中不自动换行
2 parents 34a6471 + 30e108e commit 79f61cb

File tree

1 file changed

+30
-12
lines changed

1 file changed

+30
-12
lines changed

src/mulimgviewer/src/utils_img.py

+30-12
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44
from pathlib import Path
55
from shutil import copyfile, move
6-
6+
import textwrap
77
from .custom_func.main import main as main_custom_func
88
import numpy as np
99
import piexif
@@ -567,7 +567,7 @@ def cal_txt_size_adjust_title(self, title_list, standard_size, font, font_size):
567567
split_num = 2
568568
title = title_list[i]
569569
str_ = title_list[i]
570-
while title_size[i, 0] > standard_size:
570+
while title_size[i*2+1, 0] > standard_size:
571571
ids = [0] + [(i+1)*int(len(title)/split_num)
572572
for i in range(split_num-1)]
573573
str_ = ""
@@ -583,7 +583,7 @@ def cal_txt_size_adjust_title(self, title_list, standard_size, font, font_size):
583583
size_edit = draw.multiline_textbbox((0,0),str_, font)
584584
size_edit = np.array(size_edit)
585585
size_edit = size_edit.reshape(-1, 2)
586-
title_size[i, :] = size_edit[0,:]
586+
title_size[i*2+1, :] = size_edit[1,:]
587587
split_num = split_num+1
588588
if split_num > len(title):
589589
break
@@ -997,15 +997,33 @@ def title_preprocessing(self, img, id):
997997
img = Image.new('RGBA', tuple(title_max_size), self.gap_color)
998998
draw = ImageDraw.Draw(img)
999999
title_size = self.title_size[id*2+1, :]
1000-
delta_x = int((title_max_size[0]-title_size[0])/2)
1001-
if self.title_setting[2]:
1002-
# up
1003-
draw.multiline_text(
1004-
(delta_x, 0), self.title_list[id], font=self.font, fill=self.text_color)
1005-
else:
1006-
# down
1007-
draw.multiline_text(
1008-
(delta_x, 0), self.title_list[id], font=self.font, fill=self.text_color)
1000+
delta_x = max(0,int((title_max_size[0]-title_size[0])/2))
1001+
one_size = int(int(self.title_setting[8])/2)#int(title_size[0]/int(len(self.title_list[id])))
1002+
wrapper = textwrap.TextWrapper(width=int(int(title_max_size[0])/int(one_size))) # 设置换行的宽度
1003+
lines = wrapper.wrap(text=self.title_list[id])
1004+
if delta_x + title_size[0] > title_max_size[0]:
1005+
delta_x = 0
1006+
y = 0
1007+
# 遍历处理过的行进行绘制
1008+
for line in lines:
1009+
if delta_x + len(line )*one_size > title_max_size[0]:
1010+
delta_x = 0
1011+
if self.title_setting[2]:
1012+
# up
1013+
draw.text((delta_x, y), line, align="center",font=self.font, fill=self.text_color)
1014+
else:
1015+
# down
1016+
draw.text((delta_x, y), line, align="center",font=self.font, fill=self.text_color)
1017+
y += int(self.title_setting[8]) # 增加y轴偏移量,确保每行文本不重叠
1018+
1019+
# if self.title_setting[2]:
1020+
# # up
1021+
# draw.multiline_text(
1022+
# (delta_x, 0), self.title_list[id], font=self.font, fill=self.text_color,align="left")
1023+
# else:
1024+
# # down (anchor=None,spacing=0,align="left",direction=None,features=None)
1025+
# draw.multiline_text(
1026+
# (delta_x, 0), self.title_list[id], font=self.font, fill=self.text_color,align="left")
10091027
return img
10101028

10111029
def title_init(self, width_2, height_2):

0 commit comments

Comments
 (0)