полное изображение с прямоугольником с текстом внутри - PullRequest
0 голосов
/ 29 мая 2020

Пытаюсь поместить на моем изображении красный прямоугольник с белым текстом внутри. То же, что и здесь

enter image description here

Пока я могу поместить текст в левый верхний угол, но я все еще пропускаю прямоугольник во всю ширину с текст внутри него.

Куда мне поместить прямоугольник

from PIL import Image, ImageDraw, ImageFont
base = Image.open('C:\\Users\\t3cho\\Desktop\\DSC15178.jpg').convert('RGBA')
width, height = base.size
txt = Image.new('RGBA', base.size, (255,255,255,0))
fnt = ImageFont.truetype('arial.ttf', 80)
d = ImageDraw.Draw(txt)
d.text((0,0), "10% OFF FOR THIS ITEM", font=fnt, fill=(255,0,0,128))
out = Image.alpha_composite(base, txt)
out.show()

1 Ответ

0 голосов
/ 30 мая 2020
from PIL import Image, ImageFont, ImageDraw, ImageEnhance
from io import BytesIO

source_img = Image.open("C:\\Users\\t3cho\\Desktop\\DSC15178.jpg").convert("RGBA")
font = ImageFont.truetype(font=BytesIO(open("C:\\Windows\\Fonts\\COOPBL.TTF", "rb").read()),size=65)  #ImageFont.truetype("cooper black",65)
text = "This is my text centered"

# get text size
text_size = font.getsize(text)
# set button size + 10px margins
button_size =  (source_img.size[0], 100)  # (text_size[0]+20, text_size[1]+20)
# create image with correct size and black background
button_img = Image.new('RGBA', button_size, "red")
positionx = (float(source_img.size[0]) - float(text_size[0])) / float(2)
# put text on button with 10px margins
button_draw = ImageDraw.Draw(button_img)
button_draw.text((positionx, 10), text, font=font)
# put button on source image in position (0, 0)
source_img.paste(button_img, (0, 0))
# save in new file
im = source_img.convert("RGB")
im.save("C:\\Users\\t3cho\\Desktop\\DSC15178-out.jpg")
...