負荷のblob画像データQPixmap
質問
皆様にお伝えしたくて書き込みプログラムを使用PyQt4前GUI、このプログラムからアクセスバックエンドデータベース(でなければならないと規定されてMySQLまたはPostgresql).いく必要がある一部の画像データをデータベースに以下はPythonコードを使っているの輸入に画像ファイル(JPEG形式)をblobデータフィールドのデータベース:
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
この部分に働きます。私の質問は、の作成方法につQPixmapオブジェクトから画像データに格納されたデータベースPyQt4.現在のアプローチは以下の手順:
(1)六角レンチstrデータベース--cPickle&StringIO-->ときに呼びイメージオブジェクト
def load_image(s):
o = cPickle.loads(s)
c = StringIO.StringIO()
c.write(o)
c.seek(0)
im = Image.open(c)
return im
(2)呼びイメージオブジェクト-->仮画像ファイル
(3)一時的に画像ファイル-->QPixmap
このアプローチにも働きます。があたるようにしたほうがよいと思いる書き込み/読み取り臨時の画像ファイルが遅くなったり、プログラムへの対応ユーザー相互作用。思使うことがで QPixmap::loadFromData() 直接負荷からblobデータをデータベースに保存されてい誰かがここに見せてくれる方法について、例を挙げこの機能を利用す
TIA,
リビング
解決
あなたは、文字列からイメージをロードしてからピックスマップに変換するQImage.fromData静的メソッドを使用することができます:
image_data = get_image_data_from_blob()
qimg = QtGui.QImage.fromData(image_data)
pixmap = QtGui.QPixmap.fromImage(qimg)
他のヒント
蟻Aasmaによって提案されたアプローチが動作し、実際にそれだけで次のコードを使用することもOKです。
image_data = cPickle.loads(str(s)) # s is fetched from DB
qp = QPixmap()
qp.loadFromData(image_data)
おかげで、すべてのヘルプと情報のためにたくさんます。
後に良い時間半のgoogleingを解決する同様の問題がした結果、荷重通報、取りまとめを行いました。exeとQT.を使用していpython3.1、その一部が使用出来なかったのが、前述したソリューション
- ヒント作py2exeで私が使っていcxfreezeの代わりにpy2exeとpy2exeでのみ動作のためのpython2),
- ヒントを必要とするときに呼び出(みpython2,afaik).
ながら、解決策を掲載して動作しなかったから、非常に類似した:私は単純にコピーされる [PythonDir]\Lib\site-packages\PyQt4\plugins\imageformats
私exeのフォルダを削除し qt.conf
ファイルを作成したいフォルダ以下にその他のソリューション。ことになるすべての思いです。
その後、くことになっているかどうかは別として読み込まれると、jpgを使用 QPixmap
's"のコンストラクタまたは読み込み QImage
ます。また特殊なオプションに必要なもの setup.py
の cxfreeze.bat
の集計方法をexeを使用cxfreeze.
(このソリューションが掲載されるjbzに http://www.thetoryparty.com/wp/2009/08/27/pyqt-and-py2app-seriously-i-dont-know-what-to-do-with-you-when-youre-like-this/)
この問題は少し古いですが、問題がありますが、やはり、私はこの答えをpython3.1ユーザーがあります。