Mam tekst powiedzieć "I'm doing great". Chcę umieścić ten tekst na pięknym tle, które wygenerowałem. Chcę umieścić "I am doing great"
na obrazie "image.jpg"
obecny w systemie. Punktem początkowym tekstu powinien być X, y w pikselach.Dodawanie tekstu na obrazie w python za pomocą imagemagik/PIL
Próbowałem poniższy urywek, ale mam błąd: Snippet:
import PIL
from PIL import ImageFont
from PIL import Image
from PIL import ImageDraw
font = ImageFont.truetype("/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf",40)
text = "Sample Text"
tcolor = (255,0,0)
text_pos = (100,100)
img = Image.open("certificate.png")
draw = ImageDraw.Draw(img)
draw.text(text_pos, text, fill=tcolor, font=font)
del draw
img.save("a_test.png")
Błąd:
Traceback (most recent call last):
File "img_man.py", line 13, in <module>
draw.text(text_pos, text, fill=tcolor, font=font)
File "/usr/local/lib/python2.7/dist-packages/PIL/ImageDraw.py", line 256, in text
ink, fill = self._getink(fill)
File "/usr/local/lib/python2.7/dist-packages/PIL/ImageDraw.py", line 145, in _getink
ink = self.palette.getcolor(ink)
File "/usr/local/lib/python2.7/dist-packages/PIL/ImagePalette.py", line 62, in getcolor
self.palette = map(int, self.palette)
ValueError: invalid literal for int() with base 10: '\xed'
wydaje się być błąd w PIL: http://grokbase.com/t/python/image-sig/114k20c9re/perhaps-bug-report
Czy istnieje jakiekolwiek obejście mogę spróbować?
wspomina, jak rysować, a nie jak pisać tekst. Czy chciałbyś narysować litery? Nie jestem typograficzny używając pil. – user993563
Obawiam się, że tak naprawdę nie rozumiem rozróżnienia między rysowaniem tekstu na obraz i pisaniem tekstu na obrazie. – badp
aktualizacja, proszę chk edytować część. – user993563