J'écris un programme à l'aide de PYQT4 pour une interface graphique frontale et ce programme accède à une base de données Back-end (qui peut être soit MySQL, soit SQLite). J'ai besoin de stocker des données d'image dans la base de données et ci-dessous est le code Python que j'utilise pour importer des fichiers image (au format JPEG) dans un champ de données BLOB dans la base de données:
def load_image(s): o = cPickle.loads(s) c = StringIO.StringIO() c.write(o) c.seek(0) im = Image.open(c) return im
3 Réponses :
Vous pouvez utiliser la méthode statique qimage.fromdata pour charger une image à partir d'une chaîne, puis le convertir en un pixmap:
image_data = get_image_data_from_blob() qimg = QtGui.QImage.fromData(image_data) pixmap = QtGui.QPixmap.fromImage(qimg)
L'approche suggérée par les fourmis AASMA fonctionne et il est également correct d'utiliser le code suivant:
image_data = cPickle.loads(str(s)) # s is fetched from DB qp = QPixmap() qp.loadFromData(image_data)
Après une bonne heure et demie de Google pour résoudre un problème similaire, j'ai fini par charger des JPEG dans une compilée .exe avec qt. J'utilise Python3.1 et je ne pouvais donc pas utiliser certaines des solutions mentionnées précédemment: P>
Bien que les solutions postées ici ne fonctionnaient pas, quelque chose de très similaire a fait:
J'ai simplement copié le Après cela, cela a fonctionné si j'ai chargé le JPG en utilisant le constructeur (cette solution a été postée par JBZ sur http://www.thetoryParty.com/wp/2009/08/27/pyqt-and-py2app-serieusement- I-ne-connaissez-vous-savez-vous-with-vous-quand-there-the / ) p>
Cette question est un peu ancienne, mais comme le problème semble être toujours là, j'espère que cette réponse aidera Python3.1 utilisateurs là-bas. P> [pythondir] \ lib \ sites-sites-sites \ pyqt4 \ plugins \ imagesformats code> dans le dossier de mon exe et supprimé le fichier
qt.conf code> fichier que j'ai créé dans ce dossier suite aux autres solutions. C'est tout (je pense: p). P>
qpixmap code> ou chargement d'un
qimage code> premier. Il a également fonctionné sans option spéciale nécessaire pour les deux
setup.py code> et le
cxfreeze.bat code> de compilation à l'EXE à l'aide de CXFreeze. P>
Pourquoi utilisez-vous même le Step Pil? QT est parfaitement satisfait de Chargement de données JPEG: docs.huihoo.com/pyqt/pyqt4/html/...
Je suis sûr que qt est capable de charger des données JPEG. Ce que je cherche, c'est un extrait de code qui convertit la chaîne codée dans le champ Blob vers l'objet QpixMap. Merci!
J'ai compris que je peux simplement utiliser qpixmap :: chargantfromdata (cpickle.loads (s)) où S est la chaîne des données extraites du champ BLOB. Merci pour l'aide.