我想在一个新图像中附加两个图像,我可以单独打开每个图像,并且我已经成功地将它们附加到数组中,当我尝试打印icon.width
或icon.height
时,我从我迭代的图标中获得实际的宽度/高度。我的问题是,当我尝试粘贴图像时,会出现一个奇怪的错误
AttributeError: 'PngImageFile' object has no attribute 'load_seek'
到目前为止,我没有发现任何有用的东西,我不知道我做错了什么
from PIL import Image
icons = []
with Image.open('images/poison_copy.png') as copy:
icons.append(copy)
with Image.open('images/poison_2.jpg') as scopy:
icons.append(scopy)
# New sheet
first = icons[0]
sheet = Image.new(first.mode, (2*first.width, first.height))
x = 0
for icon in icons:
sheet.paste(icon, (x, 0))
x += icon.width
sheet.show()
你的问题是:
当您以这种方式使用
with
时,您告诉Python在将块留在with
下时关闭正在打开的文件。但是,通过将文件句柄压入icons
来保存它们。这意味着icons
中的两个文件句柄已失效……它们将调用其close()
方法。PIL文档介绍了close()
方法:paste()
方法失败,因为您正在为它提供一个关闭的、因此无用的文件句柄来进行操作您要做的是让文件保持打开状态,直到处理完这些图像。解决此问题的一种方法是用以下行替换
with
块:然后,在粘贴后立即关闭文件:
相关问题 更多 >
编程相关推荐