创建图像的缩略图失败,并出现TypeError:'int'对象不可下标
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建图像的缩略图失败,并出现TypeError:'int'对象不可下标相关的知识,希望对你有一定的参考价值。
我正在尝试使用PIL模块创建背景对象,但是有一个我不理解的错误。代码:
from PIL import Image
class background():
def __init__(self, width, height, value):
img = Image.open('new.png')
img_new = img.thumbnail(width, height)
for x in range(width):
for y in range(height):
img_new.putpixel(x, y, value)
img_new.show()
bg = background(200, 200, 1)
错误:
Traceback (most recent call last):
File "...filename.py", line 11, in <module>
bg = background(200, 200, 1)
File "...filename.py", line 5, in __init__.py
img_new = img.thumbnail(width, height)
File "...Python38-32libsite-packagesPILImage.py", line 2205, in thumbnail
if x > size[0]:
TypeError: 'int' object is not subscriptable
这是什么意思?
Image.thumbnail()
method需要一个Image.thumbnail()
参数,它是宽度和高度的元组:
size
或者,也许更清晰:
img.thumbnail((width, height))
该方法还带有第二个参数size = (width, height)
img.thumbnail(size)
;您传入resample
作为大小,传入width
作为height
参数。通过传递resample
作为大小,您会得到错误。当该方法尝试为width
值建立索引(期望一个元组)时,将抛出异常,因为无法对整数进行索引。
您在调用width
时遇到类似的错误,该位置也是一个元组:
Image.putpixel()
请注意,您确实不需要打开现有图像。如果您想创建色彩均匀的空白图像,只需使用Image.putpixel()
img_new.putpixel((x, y), value)
您需要在Image.new()
这里;假设您的Image.new()
是单个整数值,我选择了class background():
def __init__(self, width, height, value):
img_new = Image.new("I", (width, height), value)
# ... do something with the new, uniformly coloured image.
,其中像素由32位带符号整数表示。上面创建的图像大小正确,并且所有像素均设置为pick an image mode。
以上是关于创建图像的缩略图失败,并出现TypeError:'int'对象不可下标的主要内容,如果未能解决你的问题,请参考以下文章