Hi.
Ich möchte ein Bild erst mit open öffnen, dann den Inhalt in eine Sqlite Datenbank speichern. Soweit so gut. Jetzt möchte ich das Bild aber wieder auslesen, so dass ich den Inhalt in einer Variable habe. Wie kann ich das dann in ein wx.Bitmap oder wx.Image umwandeln?
Hoffe ihr wisst da weiter.
Gruß sprudel
Bild in Datenbank speichern, auslesen und anzeigen
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi sprudel!sprudel hat geschrieben:Jetzt möchte ich das Bild aber wieder auslesen, so dass ich den Inhalt in einer Variable habe.
z.B. so:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
try:
import sqlite3
except ImportError:
from pysqlite2 import dbapi2 as sqlite3
import wx
from StringIO import StringIO
wx.SetDefaultPyEncoding("iso-8859-15")
class MyDatabase(object):
def __init__(self):
self.conn = sqlite3.connect(":memory:")
# Nur zu Demozwecken:
self.create_stucture()
self.insert_image(file("test.jpg", "rb").read())
def create_stucture(self):
conn = self.conn
sql = """
CREATE TABLE images (
id INTEGER PRIMARY KEY,
image TEXT
)
"""
conn.execute(sql)
conn.commit()
def insert_image(self, image):
conn = self.conn
sql = """
INSERT INTO images (image) VALUES (?)
"""
binary = sqlite3.Binary(image)
conn.execute(sql, (binary, ))
conn.commit()
def get_first_image(self):
conn = self.conn
sql = """
SELECT image FROM images LIMIT 1
"""
cur = conn.cursor()
cur.execute(sql)
return cur.fetchone()[0]
class MyFrame(wx.Frame):
def __init__(
self, parent = None, id = -1, title = "Example", size = wx.Size(550, 420)
):
wx.Frame.__init__(self, parent, id, title, size = size)
self.db = MyDatabase()
panel = wx.Panel(self)
vbox_main = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(vbox_main)
self.statbmp = wx.StaticBitmap(panel)
vbox_main.Add(self.statbmp, 1, wx.EXPAND | wx.ALL, 10)
self.get_image()
def get_image(self):
image_stream = StringIO(self.db.get_first_image())
image = wx.ImageFromStream(image_stream, type = wx.BITMAP_TYPE_JPEG)
bitmap = wx.BitmapFromImage(image)
self.statbmp.SetBitmap(bitmap)
def main():
"""Testing"""
app = wx.PySimpleApp()
f = MyFrame()
f.Center()
f.Show()
app.MainLoop()
if __name__ == "__main__":
main()
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.