Python:有没有不使用PIL在图像上绘制文本的方案

0 投票
3 回答
2636 浏览
提问于 2025-04-17 15:07

我正在使用Python 3.3,并且我从下面的链接安装了aspell和PIL(只需执行下载的.exe文件,不需要任何设置?),但当我导入PIL时出现了“未解决的PIL”错误。为什么会这样?

http://www.lfd.uci.edu/~gohlke/pythonlibs/

import PIL
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
font = ImageFont.truetype("C:/arial.ttf",25)
img=Image.new("RGBA", (200,200),(120,20,20))
draw = ImageDraw.Draw(img)
draw.text((0, 0),"This is a test",(255,255,0),font=font)
draw = ImageDraw.Draw(img)
draw = ImageDraw.Draw(img)
img.save("a_test.png")

或者有没有其他方法可以在图像上绘制文本,而不使用PIL?

3 个回答

1

使用 OpenCV

import cv2
font = cv2.FONT_HERSHEY_SIMPLEX 
orgin = (50, 50) 
fontScale = 1
color = (255, 0, 0) 
thickness = 2

使用 cv2.putText() 方法

image = cv2.putText(image, 'OpenCV', org, font, fontScale, color, thickness, cv2.LINE_AA) 
1

因为还没有发布适用于3.3的版本。

“当前的免费版本是PIL 1.1.7。这个版本支持Python 1.5.2及更新的版本,包括2.5和2.6。3.X版本会在之后发布。” - 这段话来自PIL的主页。

如果你想使用PIL,建议使用Python 2.6。因为Python 3.X对语言做了一些改动,所以它和之前的版本不完全兼容。

我建议你使用旧版本的Python,而不是3.X,除非你有非常好的理由需要使用3.X。

2

Pillow 是 Python 图像库的延续,已经更新到可以和 Python 3 一起使用。这应该能解决你遇到的 PIL 问题。

最近在 Python 中还有其他一些可以在图像上绘制文字的选择:

  • Pygame 是一个 SDL 1.2 的封装,自 Pygame 1.9.2 起支持 Python 3。
  • Wand 是一个基于 ctypes 的 ImageMagick 封装。
  • gdmodule 封装了 GD,但它的安装程序似乎只适用于 Linux。在 Windows 上可能没法用(比如 "C:/arial.ttf"),但对遇到同样问题的其他人可能有帮助。

撰写回答