from PIL import ImageDraw, ImageFont def create_thumbnail( thumbnail, font_family, font_size, font_color, width, height, title ): font = ImageFont.truetype(font_family + ".ttf", font_size) Xaxis = width - (width * 0.2) # 20% of the width sizeLetterXaxis = font_size * 0.5 # 50% of the font size XaxisLetterQty = round( Xaxis / sizeLetterXaxis ) # Quantity of letters that can fit in the X axis MarginYaxis = height * 0.12 # 12% of the height MarginXaxis = width * 0.05 # 5% of the width # 1.1 rem LineHeight = font_size * 1.1 # rgb = "255,255,255" transform to list rgb = font_color.split(",") rgb = (int(rgb[0]), int(rgb[1]), int(rgb[2])) arrayTitle = [] for word in title.split(): if len(arrayTitle) == 0: # colocar a primeira palavra no arrayTitl# put the first word in the arrayTitle arrayTitle.append(word) else: # if the size of arrayTitle is less than qtLetters if len(arrayTitle[-1]) + len(word) < XaxisLetterQty: arrayTitle[-1] = arrayTitle[-1] + " " + word else: arrayTitle.append(word) draw = ImageDraw.Draw(thumbnail) # loop for put the title in the thumbnail for i in range(0, len(arrayTitle)): # 1.1 rem draw.text( (MarginXaxis, MarginYaxis + (LineHeight * i)), arrayTitle[i], rgb, font=font ) return thumbnail