Рисование текста с помощью PIL работает не на всех изображениях - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь нарисовать текст на изображениях с помощью PIL.Тем не менее, я могу видеть текст только на определенных изображениях.Многие png не работают, такие как этот:

http://r0k.us/graphics/kodak/kodim16.html

Пример кода:

import PIL
from PIL import ImageFont
from PIL import Image
from PIL import ImageDraw
from os.path import expanduser


im1=Image.open(expanduser('~/Desktop/in.png'))

# Drawing the text on the picture
font = ImageFont.truetype('/Library/Fonts/Songti.ttc', 100)
draw = ImageDraw.Draw(im1)
draw.text((50, 600), 'OMG!', fill="#aa0000", font=font)
draw = ImageDraw.Draw(im1)

# Save the image with a new name
im1.save(expanduser('~/Desktop/out.png'))

Я пытался добавить .convert("RGBA") ииспользуя RGB для цвета, безрезультатно.

Код работает на фотографиях, сделанных с моего iPhone.Но когда я использую ImageMagick для преобразования этих фотографий iPhone в .jpg или .png, код снова перестает работать.

Неужели эта функция рисования текста работает только на определенных форматах изображений?

ОБНОВЛЕНИЕ

Я добавил фактическую текстовую позицию к вызову .text().Код работает на .png, взятом с iPhone.

1 Ответ

0 голосов
/ 05 декабря 2018

Я думаю, что вы только что получили координаты x и y неверно и пытались записать 600 пикселей вниз изображения, высотой 512 пикселей:

#!/usr/bin/env python3

import PIL
from PIL import Image, ImageFont, ImageDraw

im1=Image.open('start.png')

# Drawing the text on the picture
font = ImageFont.truetype('/Library/Fonts/Herculanum.ttf', 100)
draw = ImageDraw.Draw(im1)
draw.text((50, 200), 'OMG!', (255,0,255), font=font)

# Save the image with a new name
im1.save('result.png')

enter image description here

...