繁体   English   中英

使用PIL在python 2.7中将文本写入图像

[英]Writing text to image in python 2.7 using PIL

编辑:代码工作但是我有

draw.text((30,10), "Hello World", (255, 255, 255, 255),font=font)

将“ Hello World”写成白色。 如果您将其更改为

draw.text((30,10), "Hello World", (255, 255, 255, 255),font=font)

输入代码“ Hello world”将用黑色书写。

我有一个python脚本试图将“ Hello World”写到jpg图像上,但是当我保存文件时,没有文本写入其中,有什么想法吗? 我正在使用python 2.7和Pillow。

我也看了一下这个文档: http : //pillow.readthedocs.io/en/3.1.x/reference/ImageDraw.html

码:

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

pattern = Image.open("DANK.jpg", "r").convert('RGBA') 

size = width, height = pattern.size
draw = ImageDraw.Draw(pattern,'RGBA')
font = ImageFont.truetype("Font.ttf", 3)

draw.text((30,10), "Hello World", (255, 255, 255, 255),font=font)
pattern.save('sample-out.jpg')

我还注意到,保存图像时颜色变为灰度,为什么会这样呢?

以下代码对我有用,但我使用了python 3和png。 我将图像放置在与代码相同的目录中,然后在图像上写入了文本。

from PIL import Image, ImageDraw, ImageFont
# get an image
base = Image.open('lena.png').convert('RGBA')

# make a blank image for the text, initialized to transparent text color
txt = Image.new('RGBA', base.size, (255,255,255,0))

# get a font
fnt = ImageFont.truetype('Pillow/Tests/fonts/FreeMono.ttf', 40)
# get a drawing context
d = ImageDraw.Draw(txt)

# draw text, half opacity
d.text((100,100), "Hello", font=fnt, fill=(255,255,255,128))
# draw text, full opacity
d.text((100,160), "World", font=fnt, fill=(255,255,255,255))

out = Image.alpha_composite(base, txt)

out.show()

我没有字体,但是它似乎也可以与python 2.7和jpg图片一起使用,就像您的代码一样(但我没有字体)

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

pattern = Image.open("DANK.jpg", "r").convert('RGBA')

size = width, height = pattern.size
draw = ImageDraw.Draw(pattern,'RGBA')
#font = ImageFont.truetype("Font.ttf", 3)

draw.text((30,10), "Hello World", (0, 0, 0, 0))#,font=font)
pattern.save('sample-out.jpg')

在此处输入图片说明

以下与您的代码(使用我的Ubuntu 16.04)最相似,也可以在图像上渲染文本。

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

pattern = Image.open("DANK.jpg", "r").convert('RGBA')

size = width, height = pattern.size
draw = ImageDraw.Draw(pattern,'RGBA')
font = ImageFont.truetype("Pillow/Tests/fonts/FreeMono.ttf", 100)

draw.text((300,10), "Hello World", (0, 0, 0, 0),font=font)
pattern.save('sample-out.jpg')

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM