python - pil 绘制不同颜色的文本

标签 python text python-imaging-library draw

你好,用不同的选项绘制三个不同的文本,例如:

  1. text-number-1 , font=arial, color=red
  2. text-number-2 , font=veranda, color=blue, size=30
  3. text-number-3, font=tahoma, color=green, size=40, align=center

文本必须换行。

def pil_image(request):
text = request.GET.get('text', None)
font = str(request.GET.get('font', 'arial'))
fontsize = int(request.GET.get('fontsize', '20'))
textcolor = str(request.GET.get('textcolor', '000'))

import Image, ImageDraw, ImageFont, textwrap

img = Image.open('media/text/transparent.png')
img = img.convert("RGBA")
datas = img.getdata()
w, h = img.size

newData = []
for item in datas:
    if item[0] == 255 and item[1] == 255 and item[2] == 255:
        newData.append((255, 255, 255, 0))
    else:
        newData.append(item)

img.putdata(newData)

draw = ImageDraw.Draw(img)
font = ImageFont.truetype("media/text/fonts/" + font + ".ttf", fontsize, encoding="unic")


margin = offset = 40
for line in textwrap.wrap(text, width=48):
    w, h = draw.textsize(line)
    draw.text((margin, offset), line, font=font, fill='#'+textcolor)
    offset += font.getsize(line)[1]

del draw 

img.save("media/text/custom.png", "PNG")

return HttpResponse("<img src='/media/text/custom.png'>");

最佳答案

“填充”参数应该是一个包含 4 个数字的元组,因为您使用的是 RGBA 颜色模式。

对于不透明的红色:

draw.text((margin, offset), line, font=font, fill=(255,0,0,255) )

关于python - pil 绘制不同颜色的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15026178/

相关文章:

python - 如何在不增加噪声的情况下使用python调整图像大小?

python - Qt - 如何获取 QLabel 中字符串的像素长度?

c++ - 逐行读取文本文件(带整数)并将每一行存储为 vector (C++)

android - 从 SQL 数据库检索数据后如何更改微调器的文本颜色和大小?

text - 如何更改apache poi word文档中的文本方向(不是段落对齐)?(XWPF)

python - 使用 Python PIL 库将图像垂直淡化为透明

Python PIL jpeg 质量

python - 如何在 pandas 数据框中创建 "never"过滤器

python - 使用正则表达式来避免 if elifs

Python XLWT - 插入与单元格右上角对齐的图像