2009-12-30 4 views
0

이 코드는 내 그림을 표시하지 못했습니다. 그림이 실제로 존재합니다 :) 아무도 왜이 나던 일을 알고 있니? 미리 감사드립니다.Python에서 이미지로드 (오류) part_2

from PIL import Image 
im = Image.open("D:\\Python26\\PYTHON-PROGRAMME\\bild.jpg") 
im.show() 
+0

오류 메시지가 무엇입니까? 스택 트레이스가 있습니까? – rui

+0

IDLE에 메시지가 없습니다. 그림 뷰어에는 그림이 삭제되거나 이동되었다는 메시지가 표시됩니다. 그러나 나는 이것이 잘못된 것이라고 생각한다. 스택 트레이스 란 무엇입니까? – kame

+0

스택 추적입니까? ('', 1, '', 없음), ('D : \ Python26 \\ lib \\ idlelib \\ run.py', 93, 'main', ret = method (* args, *) ('D : \ Python26 \\ run.py', 293, 'runcode', 'self.locals의 exec 코드'), ('D : \ Python26 \ \\ 00000000000000000 ', 11,' ','x() '), ('D : \ Python26 \\ PYTHON-PROGRAM \\ 00000000000000000 ', 5,'x ','print traceback.extract_stack() ')] – kame

답변

1

open() 메서드가 강제로 작업을 수행하려면 load() 메서드를 호출해야 할 수 있습니다. 오픈은 게으름이다.

시도 :

from PIL import Image 
im = Image.open("D:\\Python26\\PYTHON-PROGRAMME\\bild.jpg") 
im.load() 
im.show() 

아이디어 # 2 : 패치 PIL의 파일 Image.py이 이미지를 표시하는 Windows 셸을 사용하여 잠재적으로 더 강력한 접근 방식을 가지고.

if os.name == "nt": 
    command = "start /wait %s && del /f %s" % (file, file) 

나는 기존의 구현에 문제가 델 명령 & & 후 시작 명령 후 즉시 실행되는 것으로 의심

if os.name == "nt": 
    command = "%s" % file 

과 : 메소드 _showxv에서 다음 줄을 교체 시작 명령의 결과가 끝난 후에가 아니라 오히려. 따라서 이미지 뷰어가로드하여 표시 할 준비가 될 때까지 이미 파일이 삭제되었습니다.

코드를 패치하기 전에 코드 사본을 백업하십시오.

+0

사진 뷰어에 메시지가 표시됩니다. : loading ... :(그러나 그림이 없습니다.) – kame

+0

show() 메서드가 얼마나 잘 작동하는지 너무 많이 걱정하지 않아도됩니다. 디버깅을 목적으로하며 설명서의 작동 원리에 대한 설명을 기반으로합니다. (비트 맵으로 변환, 비트 맵을 임시 파일로 저장, 기본 시스템 뷰어를 사용하여 임시 파일 표시)이 문제를 해결할 수없는 곳이 너무 많습니다. 이미지를 새로운 위치에 저장하기 수동으로 새 파일 열기 PIL을 사용하여 이미지를 어떤 방식 으로든 바꿀 수 있습니다. ay images –

+0

실제로 os.name을 변경하고 싶지 않습니다. 실제로 변경 될 것이 없었기 때문입니다. 지금은 이미지를 변경하고 다른 이름으로 저장합니다. 그 후, 나는 어떤 사진 뷰어와 함께 그것을 본다. 감사! – kame