亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AttributeError:“PngImageFile”對象沒有屬性“load_seek”

AttributeError:“PngImageFile”對象沒有屬性“load_seek”

偶然的你 2023-09-12 16:38:02
我想將 2 個圖像一起附加到一個新圖像中,我可以單獨打開每個圖像,并且當我嘗試打印icon.width或icon.height從我迭代的圖標中獲取實際寬度/高度時,我已成功將它們附加到數組中。我的問題是當我嘗試粘貼圖像時,我收到這個奇怪的錯誤AttributeError: 'PngImageFile' object has no attribute 'load_seek'到目前為止,我沒有發現任何有用的信息,而且我不知道我做錯了什么。from PIL import Imageicons = []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 sheetfirst = icons[0]sheet = Image.new(first.mode, (2*first.width, first.height))x = 0for icon in icons:    sheet.paste(icon, (x, 0))    x += icon.widthsheet.show()
查看完整描述

1 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

你的問題在這里:


with Image.open('images/poison_copy.png') as copy:

    icons.append(copy)


with Image.open('images/poison_2.jpg') as scopy:

    icons.append(scopy)

當您以這種方式使用 awith時,您是在告訴 Python 在將塊保留在with. 但是您通過將文件句柄推入icons. 這意味著兩個文件句柄icons已經死了......它們的close()方法將被調用。PIL 文檔介紹了該close()方法:


此操作將破壞映像核心并釋放其內存。此后圖像數據將無法使用。


該paste()方法失敗,因為您給它提供了這些已關閉且無用的文件句柄之一來進行操作。


您想要做的是將文件保持打開狀態,直到完成對這些圖像的處理。解決此問題的一種方法是with用以下行替換塊:


copy = Image.open('images/poison_copy.png')

icons.append(copy)


scopy = Image.open('images/poison_2.jpg')

icons.append(scopy)

然后,粘貼后立即關閉文件:


for icon in icons:

    sheet.paste(icon, (x, 0))

    icon.close()

    x += icon.width


查看完整回答
反對 回復 2023-09-12
  • 1 回答
  • 0 關注
  • 253 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號