3
3
import os
4
4
from pathlib import Path
5
5
from shutil import copyfile , move
6
-
6
+ import textwrap
7
7
from .custom_func .main import main as main_custom_func
8
8
import numpy as np
9
9
import piexif
@@ -567,7 +567,7 @@ def cal_txt_size_adjust_title(self, title_list, standard_size, font, font_size):
567
567
split_num = 2
568
568
title = title_list [i ]
569
569
str_ = title_list [i ]
570
- while title_size [i , 0 ] > standard_size :
570
+ while title_size [i * 2 + 1 , 0 ] > standard_size :
571
571
ids = [0 ] + [(i + 1 )* int (len (title )/ split_num )
572
572
for i in range (split_num - 1 )]
573
573
str_ = ""
@@ -583,7 +583,7 @@ def cal_txt_size_adjust_title(self, title_list, standard_size, font, font_size):
583
583
size_edit = draw .multiline_textbbox ((0 ,0 ),str_ , font )
584
584
size_edit = np .array (size_edit )
585
585
size_edit = size_edit .reshape (- 1 , 2 )
586
- title_size [i , :] = size_edit [0 ,:]
586
+ title_size [i * 2 + 1 , :] = size_edit [1 ,:]
587
587
split_num = split_num + 1
588
588
if split_num > len (title ):
589
589
break
@@ -997,15 +997,33 @@ def title_preprocessing(self, img, id):
997
997
img = Image .new ('RGBA' , tuple (title_max_size ), self .gap_color )
998
998
draw = ImageDraw .Draw (img )
999
999
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")
1009
1027
return img
1010
1028
1011
1029
def title_init (self , width_2 , height_2 ):
0 commit comments