2013-07-25 3 views
2

이미지에 대한 정보 (너비, 높이, 내용 유형, 파일 유형 및 파일 내용)가 포함 된 테이블이 내 DB에 있습니다. 열 file_content에 전체 이미지가 저장됩니다 (픽셀 데이터가 아닌 다른 것 - 전체 파일을 읽고 2 진 데이터로 저장). 이제 Python + PySide의 응용 프로그램에서이 레코드로 QImage (또는 QPixmap)를 만들고 싶습니다. 내가 어떻게 해?QImage from file content

나는 loadFromData를 시도했지만, 내 경우와 같이 헤더가있는 파일이 아니라 원시 픽셀 데이터를 필요로한다.

사실 나는 그것을 해결하기 위해 뜨거운 생각이 없습니다.

UPD : 내 코드 샘플 작동하지 않습니다

with open('Koala.jpg', 'r') as f: 
     content = f.read() 

    self.image = QtGui.QImage() 

    print self.image.loadFromData(content) 

결과 :

False 
Corrupt JPEG data: 1 extraneous bytes before marker 0xd9 
JPEG datastream contains no image 
+0

loadFromData가 작동해야하며 원시 픽셀 데이터를 기대하지 않습니다. 올바른 이미지 형식을 제공하고 있습니까? 전달중인 데이터가 실제로 유효한 이미지를 나타내는 것으로 확인 했습니까? –

+0

@ DanMilburn 저에게 맞지 않는 소스 코드로 질문을 업데이트했습니다. 어떤 종류의 이미지이든 관계없이 jpg 또는 png를로드하려고하면 항상 실패합니다. –

답변

1

그런 어리석은 실수! with open('Koala.jpg', 'r') as f:with open('Koala.jpg', 'rb') as f:loadFromData으로 바 꾸었습니다. 내 이미지가로드되었습니다.

이미지 파일을 바이너리로 열지 마십시오!

0

그것에 대해 QImage::loadFromData 있습니다.

docs을 참조하십시오.

+0

C++ Qt에 대한 참고로 고맙습니다. 그러나 Python 포트 Pyside는 오직 하나의 메서드'loadFromData' (http://srinikom.github.io/pyside-docs/PySide/QtGui/QImage.html#PySide.QtGui.PySide) 만 존재합니다. QtGui.QImage.loadFromData)'bool'을 반환합니다. 어쨌든, 그것은 내 업데이트 된 waustion에 따라 작동하지 않습니다 - 나는 코드 샘플을 추가했습니다. –