Есть бот, генерирует слова из переписки в вк Я хочу добавить в него демотиваторы, чтобы он вставлял картинки из беседы и текст в демотиватор и отправлял их как сотворить такое на pillow?
делаешь заготовку демотиватора( черную рамку, чтобы внизу можно было вставить текст) скачиваешь фотографию, получаешь текст из беседы -> масштабируешь картинку, чтобы она влезла в демотиватор, вставляешь ее в сам демотиватор через .paste -> ставишь текст вниз демотиватора через .text, отправляешь фото в беседу
Нашел репозиторий и чутка переделал - https://yadi.sk/d/JLWXeGaH0St5bQ (примера лучше не нашел для картинки xD) Есть 2 переменные отвечающие за строки: str1, str2. В них ты пишешь свой текст, далее за картинку бот берет файл "img.jpg" и вставляет на "template.jpg". После этого он сохраняет файлом "result.jpg". Это всего лишь каркас для бота. Код import PIL, os from PIL import Image, ImageDraw, ImageFont import random str1 = 'Опа' str2 = '!' TEMPLATE_FILENAME = 'template.jpg' EXTENSIONS = ['.jpg', '.png'] RESULT_FILENAME = 'result.jpg' UPPER_FONT = 'times.ttf' UPPER_SIZE = 45 UPPER_FONT_Y = 390 LOWER_FONT = 'arialbd.ttf' LOWER_SIZE = 14 LOWER_FONT_Y = 450 TEMPLATE_WIDTH = 574 TEMPLATE_HEIGHT = 522 TEMPLATE_COORDS = (75, 45, 499, 373) PADDING = 10 def isValidExtension(filename): for extension in EXTENSIONS: if filename.endswith(extension): return True return False def drawXAxisCenteredText(image, text, font, size, pos_y): draw = ImageDraw.Draw(image) textFont = ImageFont.truetype(font, size) textWidth = textFont.getsize(text)[0] while textWidth >= TEMPLATE_WIDTH - PADDING * 2: textFont = ImageFont.truetype(font, size) textWidth = textFont.getsize(text)[0] size -= 1 draw.text(((TEMPLATE_WIDTH - textWidth) / 2, pos_y), text, font = textFont) def getSizeFromArea(area): return (area[2] - area[0], area[3] - area[1]) def makeImage(): frame = PIL.Image.open(TEMPLATE_FILENAME) demot = PIL.Image.open("img.jpg") demot = demot.resize(getSizeFromArea(TEMPLATE_COORDS), PIL.Image.ANTIALIAS) frame.paste(demot, TEMPLATE_COORDS) drawXAxisCenteredText(frame, str1, UPPER_FONT, UPPER_SIZE, UPPER_FONT_Y) drawXAxisCenteredText(frame, str2, LOWER_FONT, LOWER_SIZE, LOWER_FONT_Y) frame = frame.convert("RGB") frame.save(RESULT_FILENAME) frame.show() if __name__ == '__main__': makeImage() Python import PIL, os from PIL import Image, ImageDraw, ImageFont import random str1 = 'Опа' str2 = '!' TEMPLATE_FILENAME = 'template.jpg' EXTENSIONS = ['.jpg', '.png'] RESULT_FILENAME = 'result.jpg' UPPER_FONT = 'times.ttf' UPPER_SIZE = 45 UPPER_FONT_Y = 390 LOWER_FONT = 'arialbd.ttf' LOWER_SIZE = 14 LOWER_FONT_Y = 450 TEMPLATE_WIDTH = 574 TEMPLATE_HEIGHT = 522 TEMPLATE_COORDS = (75, 45, 499, 373) PADDING = 10 def isValidExtension(filename): for extension in EXTENSIONS: if filename.endswith(extension): return True return False def drawXAxisCenteredText(image, text, font, size, pos_y): draw = ImageDraw.Draw(image) textFont = ImageFont.truetype(font, size) textWidth = textFont.getsize(text)[0] while textWidth >= TEMPLATE_WIDTH - PADDING * 2: textFont = ImageFont.truetype(font, size) textWidth = textFont.getsize(text)[0] size -= 1 draw.text(((TEMPLATE_WIDTH - textWidth) / 2, pos_y), text, font = textFont) def getSizeFromArea(area): return (area[2] - area[0], area[3] - area[1]) def makeImage(): frame = PIL.Image.open(TEMPLATE_FILENAME) demot = PIL.Image.open("img.jpg") demot = demot.resize(getSizeFromArea(TEMPLATE_COORDS), PIL.Image.ANTIALIAS) frame.paste(demot, TEMPLATE_COORDS) drawXAxisCenteredText(frame, str1, UPPER_FONT, UPPER_SIZE, UPPER_FONT_Y) drawXAxisCenteredText(frame, str2, LOWER_FONT, LOWER_SIZE, LOWER_FONT_Y) frame = frame.convert("RGB") frame.save(RESULT_FILENAME) frame.show() if __name__ == '__main__': makeImage()