Как показать текст на изображении с помощью подушки - PullRequest
0 голосов
/ 27 марта 2019

Я недавно начал изучать, как работать с подушкой в ​​python, и это то, что у меня есть (код ниже).

Если я запускаю это, я получаю следующую ошибку:

ValueError: невозможно определить размер региона;используйте поле из 4 предметов

Я пытался удалить строку base.paste, это устраняет ошибку, но не отображает текст.

Я надеюсь, что кто-то здесь может мне помочьчтобы исправить это, текст отображается на изображении.

@app.route("/imgtest/")
def imgtest():
    f_text = textwrap.fill(request.args.get('text'), 10)
    base = Image.open(config.assetsfolder+'/'+'facts.bmp').convert("RGBA")
    txtO = Image.new("RGBA", base.size, (255, 255, 255, 0))
    font = ImageFont.truetype(config.assetsfolder+'/'+'fonts'+'/'+'Roboto-Bold.ttf', 15)

    canv = ImageDraw.Draw(txtO)
    canv.text((95, 283), f_text, font=font, fill="Black")
    base.paste(f_text)
    base.save(config.assetsfolder+'/'+'done'+'/'+'boop.png')
    return send_file(config.assetsfolder+'/'+'done'+'/'+'boop.png')```

How do i show the text in the image?

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Поигрался немного, добавив немного случайного кода и немного лучше прочитав документацию

@app.route("/fact/")
def fact():
    filename=(config.assetsfolder+'/'+'facts.bmp')
    args=request.args.get('text')
    font = ImageFont.truetype(config.assetsfolder+'/'+'fonts'+'/'+'Roboto-Bold.ttf', size=20)
    text = wrap(font, args, 340)

    im = Image.open(filename)
    text_layer = Image.new('RGBA', im.size)

    d = ImageDraw.Draw(text_layer)

    location = (90, 600)
    text_color = (20, 20, 20)
    d.text(location, text, font=font, fill=text_color)
    text_layer = text_layer.rotate(-13, resample=Image.BICUBIC)
    im.paste(text_layer, (0, 0), text_layer)
    im.save(config.assetsfolder+'/'+'done'+'/'+'fact.png')
    return send_file(config.assetsfolder+'/'+'done'+'/'+'fact.png')

Это сделало всю работу за меня.

0 голосов
/ 27 марта 2019

Если вы используете подушку 4.0, я думаю, что это будет проблемой с версией подушки. Попробуйте в вашем cmd следующее:

 pip uninstall pillow
 pip install Pillow==3.4.2 
...