フロントエンドGUI用にPyQt4を使用してプログラムを作成しています。このプログラムは、バックエンドデータベース(MySQLまたはSQLite)にアクセスします。私は、データベース内のいくつかの画像データを格納する必要があり、以下の私は、データベースにBLOBデータフィールドに画像ファイル(JPEG形式)をインポートするために使用するPythonコードです: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フィールドからフェッチされた文字列データです。助けてくれてありがとう。 –