当前位置: 首页 > 面试题库 >

PIL如何根据图像大小缩放文本大小

史经业
2023-03-14
问题内容

我正在尝试动态缩放文本,以将其放置在尺寸不同但已知的图像上。文本将用作水印。有什么方法可以根据图像尺寸缩放文本?我并不需要文字占据整个表面区域,而只是要使其足够可见即可,以使其易于识别且难以删除。我正在使用Python
Imaging Library版本1.1.7。在Linux上。

我希望能够设置文本大小与图像大小的比率,比如说1/10大小。

我一直在寻找字体大小属性来更改大小,但是我没有运气来创建缩放它的算法。我想知道是否有更好的方法。

关于如何实现此目标的任何想法?

谢谢


问题答案:

您可以增加字体大小,直到找到合适的字体为止。 font.getsize()是告诉您呈现的文本大小的函数。

from PIL import ImageFont, ImageDraw, Image

image = Image.open('hsvwheel.png')
draw = ImageDraw.Draw(image)
txt = "Hello World"
fontsize = 1  # starting font size

# portion of image width you want text width to be
img_fraction = 0.50

font = ImageFont.truetype("arial.ttf", fontsize)
while font.getsize(txt)[0] < img_fraction*image.size[0]:
    # iterate until the text size is just larger than the criteria
    fontsize += 1
    font = ImageFont.truetype("arial.ttf", fontsize)

# optionally de-increment to be sure it is less than criteria
fontsize -= 1
font = ImageFont.truetype("arial.ttf", fontsize)

print('final font size',fontsize)
draw.text((10, 25), txt, font=font) # put the text on the image
image.save('hsvwheel_txt.png') # save it

如果这对您来说不够有效,您可以实施寻根方案,但是我猜测font.getsize()与其他图像编辑过程相比,该功能是很小的事情。



 类似资料:
  • 问题内容: 我想拍摄一张图像并更改图像的比例,虽然它是一个numpy数组。 例如,我有一个可口可乐瓶的图像: bottle-1 转换为一个numpy的形状数组,我想调整其大小以表示第二个图像的大小: bottle-2 形状为。 如何在保持原始图像的同时将图像尺寸更改为特定形状?其他答案建议每隔一行或第三行剥离,但是我想要做的基本上是像通过图像编辑器(但在python代码中)那样收缩图像。是否有任何

  • 问题内容: 背景:-我需要使用Netbeans GUI Builder制作Swing GUI。 第一个子任务是在整个背景中显示图像。 我已经按照教程完成了。我基本上已经制作了一个JFrame,将其布局设置 为GridBagLayout,然后向其中添加了一个透明的(通过取消选中opaque 属性)JPanel。(问题1) 之后,我向JFrame添加了JLabel,删除了其文本并为其添加了图像 。(问

  • 问题内容: 我要求压缩文件大小小于500kb的所有已上传图像,我已经在google上搜索了,我只能看到: 如果我采用这种方法,则必须检查压缩后图像是否小于500kb,如果不是,则选择较低的质量和尺寸。 有更好的方法吗? 问题答案: JPEG压缩事先无法预测。您所描述的方法,压缩和测量并重试,是我知道的唯一方法。 您可以尝试压缩具有不同质量设置的许多典型图像,以了解最佳起点,以及猜测设置的更改将如何

  • 我正在使用一个库从url获取图像并将其作为位图图像保存到缓存中。但是当我检索该图像时,它非常小。如何根据手机屏幕增加位图图像的高度和宽度?这是创建位图的类。

  • 我想在我的Android应用程序中增加位图的大小。 基本上,我想创建一个新的位图,其宽度与原始位图相同,但高度更大。(新)额外像素的背景可以是黑色、白色或透明。 我该怎么做?

  • 请看下面的P5代码 这个小应用程序的目的是在画布上拖放图像,根据“上传”图像的宽度和高度改变其大小。 使用:成功加载图像(至少显示图像)后,我将其宽度和高度分配给变量和。接着是画布大小的变化。。。这会导致一个错误,画布的大小与上传的图像相同(在上选中),但不显示任何内容。 使用:当禁用上的画布大小更改并单击画布时,调整大小会完美地显示图像。 应用程序需要在不点击的情况下工作,在删除图像后应该自动更