使用PIL创建指定大小的新图像
我想要找出一段红色文字在一张空白黑色图片上的确切像素高度和宽度。为此,我提取了红色的像素值,并把它们复制到一个x,y的矩阵里。接着,我创建了一张新图片,把结果粘贴上去。不过,我无法让输出的图片大小完全匹配提取出来的文字的高度和宽度。
img = Image.open("word.png")
img = img.convert("P")
his = img.histogram()
values = {}
for i in range(256):
values[i] = his[i]
for j,k in sorted(values.items(), key=itemgetter(1), reverse=True)[:10]:
print j,k
img2 = Image.new("P",img.size,255) #THIS SIZE MODE IS WHAT I CAN'T FIX
img = img.convert("P")
temp = {}
for x in range(img.size[1]):
for y in range(img.size[0]):
pix = img.getpixel((y,x))
temp[pix] = pix
if pix == 15 or pix == 11 or pix == 12 or pix == 14:
img2.putpixel((y,x),0)
img2.save("output.png")
在我注释的部分:
如果我把(0,0)作为空白画布,它会提示“图像索引超出范围”。
如果什么都不放,它也不行(那里需要一个大小)。
img.size只是使用了第一张图片的大小。
如果有人有更好的方法来完成这个事情,欢迎告诉我。我只是想获取一个特定字体和大小的单词的像素高度和宽度,以便存储在数据库里。
如果有人能帮忙,我先谢谢你(这个缩进我不知道为什么在代码里没有)
1 个回答
0
你想解决的问题听起来是,你想把图片调整到某个特定的大小,但你事先并不知道那个大小是多少。
PIL这个库不支持动态调整大小的图片,所以你需要像之前那样先创建一个更大的图片,然后再用img.crop方法来裁剪它。