2017-02-16 2 views
1

zipfile.ZipFile 모듈과 PIL.Image.open 모듈을 결합하여 압축 파일의 이미지를 읽을 수 있습니다. 그러나 PIL.Image.open으로 전화하면 오류 io.UnsupportedOperation: seek가 표시 될 수 있습니다.zip 파일과 같은 압축 파일의 이미지를 파이썬의 numpy 배열로 변환하십시오.

from zipfile import ZipFile 
from PIL import Image 

zipf = ZipFile(path, "r") 

f = zipf.open("test.jpg") 

img = Image.open(f) 

그럼, 어떻게이 문제를 해결하려면 : 내가 아래와 같이 ZipExtFile 객체 PIL.Image.open에 기능을 전달 된 상태를 의미?

답변

1

실제로 이미지의 내용을 읽고이 이미지를 버퍼 cStringIO 버퍼로 변환하여이 문제를 해결할 수 있습니다. 코드는 다음과 같습니다.

from zipfile import ZipFile 
from PIL import Image 

zipf = ZipFile(path, "r") 

# read instead of open 
content = zipf.read("test.jpg") 

img = Image.open(cStringIO.StringIO(content)) 
+1

최신 [io.BytesIO] (https://docs.python.org/3/library/io.html#io.BytesIO)를 사용해야합니다. 그렇게하면 코드가 Python 3과 Python 2에서 작동합니다. –

+0

BytesIO를 테스트 한 결과 잘 작동했습니다. 감사. –