- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在使用 PIL 的 ImageDraw 模块时遇到问题,特别是 Draw.textsize
方法。这个方法应该接受一个字符串和一个字体,并返回字符串在以该字体呈现时将占据的宽度和高度。不过,它返回的高度似乎有一个下限:我无法说服它返回低于 43
的任何值。这是一个示例 ( link ) 来显示我正在查看的内容(根据返回的宽度和高度在文本周围绘制的边界框),这是生成它的代码:
from PIL import Image, ImageDraw, ImageFont # PIL 1.1.7; Python 2.6.6
im = Image.open(r'C:\test\blank.png').convert('RGB')
draw = ImageDraw.Draw(im)
TEXTCOLOR = (0, 0, 0)
X = 10
Y = 3
for fontsize in xrange(8, 51):
# Other fonts behave the same way
font = ImageFont.truetype('Arial.ttf', fontsize)
text = 'Hello, World! Size %d' % fontsize
width, height = draw.textsize(text, font=font)
print 'Font size %d: %d x %d' % (fontsize, width, height)
bbox = [(X, Y), (X+width, Y+height)]
draw.rectangle(bbox, outline=TEXTCOLOR)
draw.text((X, Y), text, font=font, fill=TEXTCOLOR)
Y += height + 3
im.show()
一旦字体大小达到 38 左右,边界框就会拉伸(stretch)以正确匹配它,但在此之前,它被设置为静态 43
。问题是,有人知道为什么 ImageDraw 会这样吗,有人知道解决它的方法吗?我目前正在通过设置解决此问题:
width = min(width, fontsize+1)
...但这显然不是有史以来最强大的解决方案。
最佳答案
基本问题似乎是 PIL 是 super 马车,基本上不再受支持。这里提到的问题还不是最糟糕的(例如,没有人能够复制它,因为它甚至很难安装......)。
鉴于 PIL 1.1.7 中似乎猖獗的所有麻烦,最好的解决方案似乎是简单地安装 Pillow并继续前进。它不需要对已经运行 PIL 的代码进行代码更改(它是 PIL 的一个分支,因此它安装了“PIL”库),而且它似乎非常友好(并且仍然处于事件状态)。正如该问题的评论者所证实的那样,这是一个简单、无故障的安装,而且它确实按预期工作。
关于python - PIL ImageDraw.textsize 返回不正确的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16088666/
我需要画很多相互重叠的半透明圆圈。问题是它应该工作得很快。我写了以下代码: im = Image.new('RGBA', (512, 512), (255, 255, 255, 0)) for i i
下面的代码使文本位于 x 的中心,但我不知道如何计算 y 坐标的中心...它不是 (imgH-h)/2! (右 y 坐标是 -80) from PIL import Image, ImageDraw,
我实现了一种检测人脸的算法,我想对人脸进行模糊处理。我正在使用 PIL 来模糊它。 image = Image.open(path_img) draw = ImageDraw.Draw(image)
我是新人,你好so社区 我正在使用 Pillow 和 (Tkinter,BmpImagePlugin,cStringIO,subprocess,ctype s,re .. n) 模块进行开发 当这种情
我正在开发图像生成程序,但在尝试直接编辑图像像素时遇到问题。 我原来的有效方法很简单: image = Image.new('RGBA', (width, height), background) d
我正在尝试使用 Espresso 断言在 Android 中的 ImageView 上是否显示了正确的图像。图像以 SVG 格式提供,并使用 Android Studio 转换器直接转换为矢量可绘制对
我正在尝试使用 python 的 ImageDraw 库更改字体大小。 你可以做类似 this 的事情: fontPath = "/usr/share/fonts/dejavu-lgc/DejaVuL
我正在使用 PIL,我在图像上绘制了贝塞尔曲线,我想增加该曲线的厚度。这是我的代码: for image in images: img = Image.open("/home/ec2-user
我正在使用 Python 的图像处理库来渲染使用不同字体的字符图像。 这是我用来遍历字体列表和字符列表以输出每种字体的字符图像的代码片段。 from PIL import Image, ImageFo
我在使用 PIL 的 ImageDraw 模块时遇到问题,特别是 Draw.textsize 方法。这个方法应该接受一个字符串和一个字体,并返回字符串在以该字体呈现时将占据的宽度和高度。不过,它返回的
我有一张 PIL 图片: img=Image.open(...) 我将其转换为 ImageDraw 以在其中写入。 img=ImageDraw.Draw(img) 现在我把文字放进去: img.tex
来自 PIL 文档: PIL.ImageDraw.Draw.line(xy, fill=None, width=0) Draws a line between the coordinates in t
我正在尝试使用 PIL 的 ImageDraw 模块进行单个像素操作。下面的代码应该创建 Tkinter Canvas 小部件。然后打开一张图片,将一个像素的颜色更改为红色,然后将图片嵌入到 Canv
我正在尝试使用 PIL 和 Imagedraw 创建分段弧。 arc 函数让我很容易画出弧线,但它只是一条线。我需要能够放置给定半径和厚度(ID 到 OD)的圆弧,但 AI 找不到任何类型的厚度或宽度
是否有枕头中可用的所有命名颜色的列表?我在文档中找不到对确切颜色名称的引用。 最佳答案 名称在 ImageColor.py 中定义.这是获取完整列表的方法: for name, code in PIL
我试图弄清楚如何根据我拥有的文本选择在 ImageFont.truetype 中使用的字体。 所以我有一个脚本,它读取 CSV 文件并根据其中一个字段中的文本为每一行制作图像。每行还包含一个指定语言和
我正在为我的项目使用 PIL,并且我有 ImageDraw 对象。 我想获取在 ImageDraw 对象上绘制的图像。我如何获得图像? 最佳答案 这是你想要的? from PIL import Ima
执行以下代码时,第一个输出文件工作正常,但第二个输出文件从列表中的第一个和第二个项目中绘制文本。每次迭代文本都会继续累积。但是,文件名很好并且不会累积。 def write_text_to_image
代码: avatar = Image.open('temp_avatar.png').convert('RGBA') color = (255,255,255,0) mask
我正在尝试在 QR 码的图像上书写文本,但我找不到用白色以外的其他颜色书写的方法(这对于 QR 码来说毫无用处)。 这是我得到的错误页面(我也在使用 Django): TypeError at /pr
我是一名优秀的程序员,十分优秀!