[파이썬] JPG/PNG/GIF를 WebP로 변환하기

◎ WebP 변환 코드를 알려드리기에 앞서 사설 짧게...

이번에 구글 서치 콘솔에서 "코어 웹 바이탈"로 이 블로그를 테스트해 봤는데 블로그 품질에 영향을 미치는 것 중에 하나가 속도인데 거기에서도 이미지 파일이 걸리는 게 있더라고요.

구글에서 만든 이미지 파일이어서 그런지는 모르겠지만 WebP라는 파일을 사용해서 파일의 용량과 속도를 올리라는 의미로 체크되는 항목에 나오더라고요.

WebP라... 이날 처음으로 WebP라는 파일을 알았습니다.

주로 우리에게 친숙하고 많이 사용하는 이미지 파일이 "JPG/PNG/GIF"일 텐데요.

저는 주로 이미지의 열화가 덜한 PNG를 사용하는데  WebP 파일에 급 호기심이 발동했습니다.

혹시나 해서 포토샵을 열어 확인했더니 WebP라는 파일을 지원하더라고요.

그래서 기존에 가지고 있던 PSD 파일을 PNG 파일로 저장한 후 다시 WebP 파일로 저장을 해서 비교해 보았습니다.

눈으로는 화질의 차이를 못 느꼈지만 WebP의 크기가 확실히 작더라고요. (이후 여러 파일을 비교해서 보니 각각의 차이는 있지만 확실히 WebP의 용량이 작았습니다.)

그래서 괜찮구나 싶어서 기존 게시물에 타이틀 이미지를 PNG 대신 바꿔서 넣자고 생각했으나 600개가 넘는 PNG 파일을 포토샵에서 일일이 저장하는 것도 일이었고 무엇보다도 각각의 PSD 파일을 가지고 있지 않아서 기존의 PNG 파일을 WebP로 변환하는 파이썬 파일을 만들기로 했고, 이 파일을 여러분께서도 쓰시라고 이렇게 올려봅니다.





우선 아래는 오늘 알려드릴 파이썬의 코드로 변환한 파일입니다.

원본 PNG 파일을 변환 시킨 것으로서 두 이미지의 크기 및 화질을 비교해 보세요.


왼쪽이 원본 PNG, 오른쪽이 변환한 WebP 파일입니다. 원래 이미지의 용량도 작지만 그래도 수치상으로 차이가 많이 납니다. (300% 확대 캡쳐)






◎ 다음은 파이썬으로 만든 "JPG/PNG/GIF to WebP" 코드입니다.

※ 파이썬이 설치가 되어있다는 가정하에 CMD(명령 프롬프트)를 실행해서 "pip install Pillow"를 입력해서 모듈을 설치해야 정상적으로 사용할 수가 있습니다.


import os
from PIL import Image

quality = 100  # 변환 화질 설정

def convert_image_to_webp(input_path, output_path):
    try:
        with Image.open(input_path) as img:
            img.save(output_path, 'WEBP', quality=quality)
            print(f"변환 성공: {input_path} ▶▶ {output_path}(품질 {quality})")
    except IOError:
        print(f"{input_path}을(를) 변환할 수 없습니다.")

def batch_convert_images_to_webp(input_folder, output_folder):
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    for file in os.listdir(input_folder):
        file_path = os.path.join(input_folder, file)
        if file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
            output_path = os.path.join(output_folder, os.path.splitext(file)[0] + '.webp')
            convert_image_to_webp(file_path, output_path)

if __name__ == "__main__":
    input_folder = "."  # 현재 폴더에서 이미지 파일 검색
    output_folder = "webp_output"  # 출력 폴더
    batch_convert_images_to_webp(input_folder, output_folder)


이 코드는 기본적으로 현재 폴더에 있는 모든 이미지 파일을 WebP로 변환해주는 역할을 하므로 이미지가 있는 곳에 py 파일을 복사해서 실행해야 합니다.

파일을 실행하게 되면 다음과 같은 화면을 보게 됩니다.


이미지 변환 품질은 코드 안에서 수정할 수 있으니 적절히 수정해서 사용하시면 됩니다.





◎ 마치며...

이 파일을 얼마나 자주 사용할지는 저도 모르겠습니다만 아마도 주로 블로그에 올릴 이미지는 포토샵에서 바로 WebP로 저장해서 올릴 것 같고, 다른 곳에서 받은 파일이나 캡쳐한 이미지의 경우는 이 파일을 이용해서 변환해서 사용할 듯 합니다. (사용은 각자 알아서 하시는 걸로...)
아무튼 저와 같이 코딩을 잘 모르는 분들께 조그만 도움이 되었길 바라며 다음에 또 다른 코드를 가지고 오겠습니다.


댓글 쓰기



빠른 답변을 원하시면 댓글 작성 후 "□ 알림"에 체크를 하세요.

다음 이전