Python to Convert PNG Image to ICO Format with Full Source Code For Beginners

This project contains a simple python script to convert a .png image to .ICO format


  • Pillow module
pip install pillow

Two methods:

The conversion can be done in two ways:

Using Terminal:

  • Add the image in png format with name as ‘input’ in this folder.
  • Run the script.
  • output image will be generated and saved in this folder with the name ‘output’.

Using GUI:

  • Run the script.
  • Select the ‘Import PNG File’ button and pick any png image from any location.
  • Select the ‘Convert PNG to ICO’ button and pick the location where the file will be saved.

Source Code:

from PIL import Image
# Take input image from present folder
img ='input.png')
# Generate and save output image to present folder'output.ico') Code language: PHP (php)

import tkinter as tk
from PIL import Image

# Initialize Tkinter window
root = tk.Tk()
# Initialize variable to store image path
img = None
# Initialize font, background color, foreground color and width for the buttons
font = ('helvetica', 12, 'bold')
bg = 'blue'
fg = 'white'
width = 15

def getPNG():
    '''Function to get png image location and open it with pillow'''
    global img
    import_file_path = tk.filedialog.askopenfilename(filetypes=[("PNG File",'.png')])
    img =

def convertToICO():
    global img
    '''Function to convert image from png to ico format with pillow and save to user specified location'''
    if img is None:
        tk.messagebox.showerror("Error", "No File selected")
        export_file_path = tk.filedialog.asksaveasfilename(defaultextension='.ico')
        tk.messagebox.showinfo("Success", "File converted and saved")

# Set the window title
root.title('PNG to ICO Converter')
canvas1 = tk.Canvas(root, width=500, height=350, bg='lightblue')
# Set the screen title
label1 = tk.Label(root, text='PNG to ICO Converter', bg='lightblue')
label1.config(font=('helvetica', 20))
canvas1.create_window(250, 100, window=label1)
# Browse button to browse for image
browseButton = tk.Button(text="Import PNG File", command=getPNG, bg=bg, fg=fg, font=font, width=width)
canvas1.create_window(250, 150, window=browseButton)
# Convert button to convert selected image and save
saveAsButton = tk.Button(text='Convert PNG to ICO', command=convertToICO, bg=bg, fg=fg, font=font, width=width)
canvas1.create_window(250, 200, window=saveAsButton)
root.mainloop()Code language: PHP (php)

Leave a Comment