使用PIL创建特定大小的新图像

时间:2014-06-30 16:01:36

标签: python size png python-imaging-library pixel

我试图在空白的黑色图像上找到一段红色文字的确切像素高度和长度。为此,我将获取红色的像素值,并将其复制并粘贴到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只使用第一个img的大小。

如果有人有更好的方法做这件事,请随时告诉我。我所要做的就是获取特定字体+大小的单词的像素高度/长度,以便将其存储在数据库中。

如果有人可以提供帮助,请提前致谢(其缩进,我不知道为什么它不在代码中)

1 个答案:

答案 0 :(得分:0)

您尝试解决的问题听起来像是要将图像尺寸调整到一定的尺寸,但事先并不知道尺寸是多少。

PIL不支持动态大小的图像,因此您需要像创建更大的图像,然后使用img.crop方法裁剪它。