Tôi có văn bản nói "Tôi đang làm rất tốt". Tôi muốn đặt văn bản này trên một nền tảng đáng yêu mà tôi đã tạo ra. Tôi muốn đặt "I am doing great"
trên hình ảnh "image.jpg"
có trong hệ thống. Điểm bắt đầu của văn bản phải là X, y tính bằng pixel.thêm văn bản trên hình ảnh trong python bằng imagemagik/PIL
tôi đã cố gắng đoạn sau, nhưng đang gặp lỗi: 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")
Lỗi:
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'
có vẻ là một lỗi trong PIL: http://grokbase.com/t/python/image-sig/114k20c9re/perhaps-bug-report
Có bất kỳ workaround tôi có thể thử?
điều này đề cập đến cách vẽ, không phải cách viết văn bản. Bạn có muốn vẽ các chữ cái không? Im không cho typograpfy sử dụng pil. – user993563
Tôi sợ tôi không thực sự hiểu được sự khác biệt giữa việc vẽ văn bản lên một hình ảnh và viết văn bản lên một hình ảnh. – badp
cập nhật, vui lòng chỉnh sửa phần chỉnh sửa. – user993563