본문 바로가기

코딩과 데이터 분석

webp 이미지 파일의 확장자 일괄 변형

 

ChatGPT의 DALL-E로 생성한 이미지를 다운로드 받으면, .webp  확장자를 가진 이미지 파일로 다운로드가 됩니다. 

이 .webp 확장자의 이미지 파일을 .png 파일로 일괄로 변형하는 파이썬 코드를 ChatGPT를 활용하여 작성해 보았습니다. 

from PIL import Image
import os

def convert_webp_to_png(source_folder, destination_folder):
    """
    Convert all WEBP files in the source_folder to PNG format and save them in destination_folder.

    :param source_folder: Folder containing WEBP files.
    :param destination_folder: Folder where PNG files will be saved.
    """
    # Create the destination folder if it doesn't exist
    if not os.path.exists(destination_folder):
        os.makedirs(destination_folder)

    # Iterate through all files in the source folder
    for filename in os.listdir(source_folder):
        if filename.endswith(".webp"):
            # Create the file paths
            webp_path = os.path.join(source_folder, filename)
            png_path = os.path.join(destination_folder, filename[:-5] + ".png")
            
            # Open the WEBP and save it as PNG
            with Image.open(webp_path) as image:
                image.save(png_path, "PNG")
    
    print(f"Conversion complete. PNG files are saved in {destination_folder}")

# Example usage
source_folder = '/path/to/source/folder'  # Replace with your source folder path
destination_folder = '/path/to/destination/folder'  # Replace with your destination folder path

convert_webp_to_png(source_folder, destination_folder)

 

이 코드를 실행 시키기 위해서는 Pillow library를 설치해야 합니다. 

pip install Pillow

 

여기서 .webp 확장자를 가진 파일들이 있는 폴더(source_folder)와 확장자를 변형한 파일들을 모아 놓을 폴더(destination_folder)를 수정해 주면 됩니다. 

 

위의 코드를 실제로 이용하려면, source_folder와 destination_folder를 매번 수정하고, VS-code나 Pycharm 같은 IDE에서 실행시켜야 하는 불편합니다. 

그래서, 이번에는 Claude 3를 이용해서 앱 형태로 만들어 보았습니다. 

먼저, Python의 내장 GUI 라이브러리인 Tkinter를 사용하여 사용자 인터페이스(UI)와 프로그램 로직을 분리하는 코드를 작성하였습니다. 

import tkinter as tk
from tkinter import filedialog
from PIL import Image
import os

def convert_webp_to_png():
    source_folder = source_entry.get()
    destination_folder = destination_entry.get()

    if not os.path.exists(destination_folder):
        os.makedirs(destination_folder)

    for filename in os.listdir(source_folder):
        if filename.endswith(".webp"):
            webp_path = os.path.join(source_folder, filename)
            png_path = os.path.join(destination_folder, filename[:-5] + ".png")
            with Image.open(webp_path) as image:
                image.save(png_path, "PNG")

    status_label.config(text=f"Conversion complete. PNG files are saved in {destination_folder}")

def browse_source():
    source_folder = filedialog.askdirectory()
    source_entry.delete(0, tk.END)
    source_entry.insert(0, source_folder)

def browse_destination():
    destination_folder = filedialog.askdirectory()
    destination_entry.delete(0, tk.END)
    destination_entry.insert(0, destination_folder)

root = tk.Tk()
root.title("WEBP to PNG Converter")

source_label = tk.Label(root, text="Source Folder:")
source_label.grid(row=0, column=0, padx=5, pady=5)

source_entry = tk.Entry(root, width=50)
source_entry.grid(row=0, column=1, padx=5, pady=5)

source_browse_button = tk.Button(root, text="Browse", command=browse_source)
source_browse_button.grid(row=0, column=2, padx=5, pady=5)

destination_label = tk.Label(root, text="Destination Folder:")
destination_label.grid(row=1, column=0, padx=5, pady=5)

destination_entry = tk.Entry(root, width=50)
destination_entry.grid(row=1, column=1, padx=5, pady=5)

destination_browse_button = tk.Button(root, text="Browse", command=browse_destination)
destination_browse_button.grid(row=1, column=2, padx=5, pady=5)

convert_button = tk.Button(root, text="Convert", command=convert_webp_to_png)
convert_button.grid(row=2, column=1, padx=5, pady=5)

status_label = tk.Label(root, text="")
status_label.grid(row=3, column=0, columnspan=3, padx=5, pady=5)

root.mainloop()

 

위의 코드에서는 사용자가 소스 폴더와 대상 폴더를 선택할 수 있으면, "Convert" 버튼을 클릭하면 변환 작업이 수행됩니다. 

다음으로, 위의 코드를 Pyinstaller를 활용하여 단일 실행 파일로 패키징합니다. 

Windows에서 pyinstaller를 사용하는 방법은 다음과 같습니다. 

1. pyinstaller를 설치한다. 

pip install pyinstaller

 

2. 위의 코드가 있는 디렉토리로 이동한다. 

3. 터미널에서 다음의 명령을 실행한다. 

pyinstaller --onefile --windowed your_script.py

여기서 --onefile 플래그는 모든 파일을 하나의 실행 파일로 묶고, --windowed 플래그는 콘솔 창 없이 GUI앱을 실행하도록 합니다. 

4. 빌드가 완료되면 dist 폴더에 실행 가능한 파일(.exe)이 생성된다. 

 

반응형