質問

皆様にお伝えしたくて書き込みプログラムを使用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.pycxfreeze.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ユーザーがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top