簡體   English   中英

Python PIL-從文件對象打開圖像:文件未打開以供讀取

[英]Python PIL - open image from file object: File not open for reading

imgfile = open('myimage.png', 'wb')
imgfile.write(decodestring(base64_image))

f = Image.open(imgfile)

imgfile.close()

我能夠write() base64字符串作為圖像寫入imgfile 但是當我嘗試使用PIL打開此文件時,

File not open for reading

我究竟做錯了什么?

您打開該文件進行寫入,而不是讀取。 您必須使用雙重模式,然后首先倒回文件指針:

with open('myimage.png', 'w+b') as imgfile:
    imgfile.write(decodestring(base64_image))
    imgfile.seek(0)
    f = Image.open(imgfile)

這里的w+表示寫作和閱讀,請參閱open()文檔

'+'
打開磁盤文件以進行更新(讀取和寫入)

對於二進制讀寫訪問,模式'w+b'打開並將文件截斷為0個字節。 'r+b'打開文件時不會被截斷。

但是,這里實際上並不需要使用磁盤上的文件。 使用內存中文件代替:

from io import BytesIO

imgfile = BytesIO(decodestring(base64_image))
f = Image.open(imgfile)

這里的問題是您正在使用wb打開要寫入的文件,也要使用w+b打開以進行讀取。

此處的文檔中有詳細說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM