【问题标题】:pil draw text with different colorspil 用不同的颜色绘制文本
【发布时间】:2013-02-08 04:31:56
【问题描述】:

嗨,用不同的选项绘制三个不同的文本:

  1. text-number-1,字体=arial,颜色=红色
  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'>");

【问题讨论】:

  • 您需要提供一个示例,说明您已经尝试过什么,或者至少在概念上您正在理解或解决什么问题。 SO 不是来给你做作业的。
  • 添加了我现在使用的代码

标签: python text python-imaging-library draw


【解决方案1】:

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

对于不透明的红色:

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

【讨论】:

    【解决方案2】:

    颜色使用十六进制值,如下:

    draw.text((margin, offset), line, font=font, fill="#000")
    

    【讨论】:

      【解决方案3】:

      只需这样做

      # thicker border
      draw.text((x-1, y-1), text, font=font, fill=shadowcolor)
      draw.text((x+1, y-1), text, font=font, fill=shadowcolor)
      draw.text((x-1, y+1), text, font=font, fill=shadowcolor)
      draw.text((x+1, y+1), text, font=font, fill=shadowcolor)
      

      【讨论】:

        猜你喜欢
        • 2014-07-28
        • 1970-01-01
        • 2011-03-11
        • 1970-01-01
        • 1970-01-01
        • 2011-10-10
        • 2011-05-20
        • 1970-01-01
        • 2020-09-21
        相关资源
        最近更新 更多