hi, please how do i display image stored in my database in tkinter window

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Davies
    New Member
    • Jun 2019
    • 1

    hi, please how do i display image stored in my database in tkinter window

    Code:
    import tkinter as tk
    from tkinter import *
    from PIL import Image, ImageTk
    from tkinter import filedialog
    from tkinter import ttk
    import sqlite3 as sq
    import base64
    
    window= tk.Tk()
    window.geometry('70x70')
    
    
    load = Image.open("hqdefault.jpg")
    render = ImageTk.PhotoImage(load)
    img = Label(window, image=render,width=10,height=10)
    img.image = render
    img.place(x=0, y=0)
    
    def browse():
        
        filename =  filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
        print (filename)
        entry.delete(0,END)
        entry.insert(tk.END, filename)
    
    button=ttk.Button(text='Browse',command=browse)
    button.grid()
    
    data=tk.StringVar()
    entry=ttk.Entry(textvariable=data)
    entry.grid()
    
    name='Davies'
    
    db=sq.connect('img.db')
    conn=db.cursor()
    conn.execute('''
    CREATE TABLE IF NOT EXISTS images(name TEXT, data BLOB)''')
    db.commit()
    db.close()
    def write_file(data, filename):
        # Convert binary data to proper format and write it on Hard Disk
        with open(filename, 'wb') as file:
            file.write(data)
    
    def display():
        db=sq.connect('img.db')
        conn=db.cursor()
        conn.execute('''SELECT * FROM images''')
        row=conn.fetchall()
    
        for i in row:
            
            it=i[1]
            this= open(str(len(i[1])),'wb')
            this.write(base64string.decode('base64'))
            this.close
            imgd=ImageTk.PhotoImage(this)
            panel=tk.Label(image=imgd,height=28,width=30)
            panel.image = imgd
            panel.grid()
                
            
        db.close()
            
        
    
    def add_img():
        db=sq.connect('img.db')
        conn=db.cursor()
    
        with open(str(data.get()),'rb') as f:
            file=f.read()
        with open('yhu.png','wb') as p:
            p.write(f)
        conn.execute(''' INSERT INTO images(name,data)VALUES(?,?)''',(name,file))
    
        db.commit()
        db.close()
        
    
    upload=ttk.Button(text='Upload',command=add_img)
    upload.grid()
    
    display=ttk.Button(text='Display', command=display)
    display.grid()
    
    
    
    window.mainloop()
    Last edited by gits; Jun 20 '19, 03:35 PM. Reason: added code tags
  • dwblas
    Recognized Expert Contributor
    • May 2008
    • 626

    #2
    What is the difference between your two blocks of code?

    Code:
    load = Image.open("hqdefault.jpg")
    render = ImageTk.PhotoImage(load)
    img = Label(window, image=render,width=10,height=10)
    and
    Code:
            this= open(str(len(i[1])),'wb')
            ## and note that "this" no longer exists because you closed the file
            imgd=ImageTk.PhotoImage(this)
            panel=tk.Label(image=imgd,height=28,width=30)

    Comment

    Working...