2016-08-16 3 views
0
from PIL import Image 
from subprocess import Popen, PIPE 

scr = Image.open(Popen.communicate(Popen(['import','-w','0x02a00001','png:-'], stdout=PIPE))[0]) 

파일 "/usr/lib/python3/dist-packages/PIL/Image.py"라인 2258에서 PNG 파일을 읽을 때 개방 FP = builtins.open에, 널 바이트를 내장 (파일 이름 "RB") ValueError를 임베디드 널 바이트파이썬에 ValueError : bash는 파이프

답변

4

BytesIO 용기에 원 데이터를로드하는 제보십시오

from io import BytesIO 
from PIL import Image 
from subprocess import Popen, PIPE 

data = Popen.communicate(Popen(['import','-w','0x02a00001','png:-'], stdout=PIPE))[0] 
scr = Image.open(BytesIO(data)) 
+0

Image.open '()는'파일명 걸린다. 파이썬 3에서 파일 이름이 null 인 파일 이름을 열려고하면 "ValueError : embedded null byte"오류가 발생합니다. (이것을 보시려면'open ('x \ 0y')'.)'BytesIO'에 데이터를 래핑하는 것으로는 해결되지 않습니다. –

+2

[Image.open] (http://pillow.readthedocs.io/en/3.2.x/reference/Image.html#PIL.Image.open)은 파일 이름 (문자열), pathlib.Path 개체 또는 파일 개체 . 필자의 테스트 결과에 따르면 다음과 같은 결과를 얻을 수있다.'. –

+0

나는 고쳐졌다. 예, 파일 객체처럼 작동하도록 데이터를 래핑하면 작업을 수행해야합니다. –