프론트 엔드 GUI 용 PyQt4를 사용하여 프로그램을 작성 중이며이 프로그램은 백엔드 데이터베이스 (MySQL 또는 SQLite가 될 수 있음)에 액세스합니다. 나는 데이터베이스에 일부 이미지 데이터를 저장할 필요가 아래 나는 데이터베이스에 BLOB 데이터 필드 (JPEG 형식) 이미지 파일을 가져 오는 데 사용할 파이썬 코드 :BLOB 이미지 데이터를 QPixmap에로드하십시오.
def dump_image(imgfile):
i = open(imgfile, 'rb')
i.seek(0)
w = i.read()
i.close()
return cPickle.dumps(w,1)
blob = dump_image(imgfile)
hex_str = blob.encode('hex')
# x"%s"%hex_str will be the string inserted into the SQL command
이 부분은 잘 작동은. 내 질문은 PyQt4에서 데이터베이스에 저장된 이미지 데이터를 사용하여 QPixmap 개체를 만드는 방법에 관한 것입니다. -의 cPickle & StringIO -> PIL 이미지 객체
def load_image(s):
o = cPickle.loads(s)
c = StringIO.StringIO()
c.write(o)
c.seek(0)
im = Image.open(c)
return im
(2) PIL 이미지 개체 -> 임시 이미지 파일
데이터베이스에(1) 육각 STR : 내 현재의 접근 방식은 다음과 같은 단계를 포함한다
(3) 임시 이미지 파일 -> QPixmap
이 접근법은 정상적으로 작동합니다. 그러나 사용자 상호 작용에 대한 프로그램 응답 속도를 늦출 수있는 임시 이미지 파일을 작성하거나 읽지 않아도되는 것이 좋습니다. 나는 QPixmap::loadFromData()을 사용하여 데이터베이스에 저장된 BLOB 데이터에서 직접로드 할 수 있으며이 함수를 사용하는 방법에 대한 예를 보여줄 수 있기를 바랍니다.
TIA,
빙
왜 PIL 단계를 사용합니까? Qt는 JPEG 데이터를로드하는 것에 매우 만족합니다. http://docs.huihoo.com/pyqt/pyqt4/html/qpixmap.html#reading-and-writing-image-files – balpha
Qt가 JPEG 데이터를로드 할 수 있습니다. 내가 찾고있는 것은 BLOB 필드에서 인코딩 된 문자열을 QPixmap 개체로 변환하는 코드 단편입니다. 감사! –
나는 QPixmap :: loadFromData (cPickle.loads (s))를 사용할 수 있습니다. 여기서 s는 BLOB 필드에서 가져온 문자열 데이터입니다. 도와 주셔서 감사합니다. –