As you can see my code for converting to png to jpg. I am getting so many errors in below the code.What I have to do? Can any one tell how to resolve the issue.
import tkinter as tk
from tkinter import filedialog
from PIL import Image
root = tk.Tk()
canvas1 = tk.Canvas(root, width=300, height=250, bg='azure3', relief='raised')
canvas1.pack()
label1 = tk.Label(root, text='File Conversion Tool', bg='azure3')
label1.config(font=('helvetica', 20))
canvas1.create_window(150, 60, window=label1)
def getPNG():
global im1
import_file_path = filedialog.askopenfilename()
im1 = Image.open(import_file_path)
browseButton_PNG = tk.Button(text=" Import PNG File ",command=getPNG, bg='royalblue', fg='white', font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 130, window=browseButton_PNG)
def convertToJPG():
global im1
export_file_path = filedialog.asksaveasfilename(defaultextension='.jpg')
im1.save(export_file_path)
saveAsButton_JPG = tk.Button(text='Convert PNG To JPG', command=convertToJPG, bg='royalblue', fg='white', font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 180, window=saveAsButton_JPG)
root.mainloop()
Output
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\yashk\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:/Users/yashk/PycharmProjects/png_to_jpg_convertor/png_to_jpg.py", line 27, in convertToJPG
im1.save(export_file_path)
NameError: name 'im1' is not defined
here my attempt at making your code work:
import tkinter as tk
from tkinter import filedialog
from PIL import Image
pippo = tk.Tk()
canvas1 = tk.Canvas(pippo, width=300, height=250, bg='azure3', relief='raised')
canvas1.pack()
label1 = tk.Label(pippo, text='File Conversion Tool', bg='azure3')
label1.config(font=('helvetica', 20))
canvas1.create_window(150, 60, window=label1)
im1 = None
def getPNG():
global im1
import_file_path = filedialog.askopenfilename()
im1 = Image.open(import_file_path).convert('RGB')
saveAsButton_JPG["state"] = "normal"
browseButton_PNG = tk.Button(text=" Import PNG File ",command=getPNG, bg='royalblue', fg='white', font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 130, window=browseButton_PNG)
def convertToJPG():
global im1
export_file_path = filedialog.asksaveasfilename(defaultextension='.jpg')
im1.save(export_file_path)
im1 = None
saveAsButton_JPG = tk.Button(text='Convert PNG To JPG', command=convertToJPG, bg='royalblue', fg='white', font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 180, window=saveAsButton_JPG)
# pippo.mainloop()
LOOP_ACTIVE = True
while LOOP_ACTIVE:
if im1 == None:
saveAsButton_JPG["state"] = "disabled"
else:
browseButton_PNG['fg'] = 'red'
pippo.update()
let me know if its better, I changed root.mainloop() whit a while True infinite loop that does root.update() and check if an image has been selected, if not the convert button is disabled, after each conversion the image selected is removed from memory so the convert button gets disabled. Selecting a png image does enable the convert button, and makes select button text red
I am adding input:
and output:
Stack overflow has a number of answers to this question. type the following into stack overflow search tool.
is:Convert png to jpeg using Pillow
Here is a code snippet that converts png to jpg and can resize at the same time.
import os
import tkinter as tk
from tkinter import filedialog as fido
from PIL import Image
master = tk.Tk()
# Choose True and set relevant x,y dimensions
resize, x, y = False, 500, 500
def convert():
image_name = fido.askopenfilename(title = "Pick a png file")
if image_name:
image_png, image_ext = os.path.splitext(image_name)
# Check before loading!
if image_ext.lower() == ".png":
if resize:
im = Image.open(image_name).resize(( x, y ))
else:
im = Image.open(image_name)
# Check after loading!
if im.mode != "RGB":
# Do it
rgb_im = im.convert("RGB")
image_jpg = image_png + ".jpg"
rgb_im.save(image_jpg, quality = 95)
print("Complete! Converted png to jpg")
else:
print("Failed! Not a real png file")
# clean up
im.close()
else:
print("Failed! Not a png file")
else:
print("Cancel png to jpg conversion")
master.destroy()
b = tk.Button(
master, text = "Convert PNG to JPG", command = convert)
b.pack(fill = tk.BOTH, expand = True)
master.mainloop()
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.