Chia Sẻ Mã Python Chuyển Hàng Loạt JPG Sang WebP Bằng Python

WebP là định dạng ảnh được nhiều website và ứng dụng sử dụng nhờ khả năng giảm dung lượng nhưng vẫn giữ chất lượng hiển thị tốt. Nếu cần chuyển đổi hàng chục hoặc hàng trăm ảnh JPG, việc thực hiện từng file sẽ khá mất thời gian.

Đoạn mã dưới đây sử dụng thư viện Pillow để tự động chuyển toàn bộ ảnh JPG/JPEG trong một thư mục sang WebP, đồng thời giữ nguyên tên file và không làm thay đổi ảnh gốc.

Đoạn mã này sẽ giúp bạn:

  • Chuyển toàn bộ ảnh JPG/JPEG sang WebP.
  • Giữ nguyên tên file sau khi chuyển đổi.
  • Tự động tạo thư mục lưu ảnh mới.
  • Không ghi đè lên ảnh gốc.

Chuẩn bị trước khi chạy

Đoạn mã sử dụng thư viện Pillow để đọc và chuyển đổi ảnh sang định dạng WebP. Nếu môi trường Python của bạn chưa cài thư viện này, hãy chạy lệnh:

pip install pillow

Sau khi cài đặt, bạn chỉ cần thay đổi đường dẫn thư mục và chạy chương trình.

Mã nguồn Python đầy đủ 

from PIL import Image
import os

input_folder = r"D:\Images"
output_folder = r"D:\WebP"

os.makedirs(output_folder, exist_ok=True)

for file_name in os.listdir(input_folder):

```
if not file_name.lower().endswith((".jpg", ".jpeg")):
    continue

input_path = os.path.join(input_folder, file_name)

if not os.path.isfile(input_path):
    continue

output_name = os.path.splitext(file_name)[0] + ".webp"
output_path = os.path.join(output_folder, output_name)

with Image.open(input_path) as image:
    image.save(
        output_path,
        "WEBP",
        quality=85,
        method=6
    )
```

print("Hoàn thành!")

Kết quả sau khi chạy

Sau khi thực thi, tên file sẽ được giữ nguyên, chỉ thay đổi định dạng sang .webp.

Trước khi chuyển

san-go-egger.jpg
phong-khach.jpg
san-nhua-spc.jpeg

↓

Sau khi chuyển

san-go-egger.webp
phong-khach.webp
san-nhua-spc.webp

Những chỗ bạn có thể tùy chỉnh

Thay đổi thư mục chứa ảnh

Chỉ cần sửa hai dòng sau:

input_folder = r"D:\Images"
output_folder = r"D:\WebP"

Điều chỉnh chất lượng ảnh

Mặc định bài viết sử dụng quality = 85, đây là mức khá cân bằng giữa chất lượng hình ảnh và dung lượng tệp.

  • 70 – 80: Ưu tiên giảm dung lượng.
  • 85: Phù hợp với đa số website.
  • 90 – 100: Chất lượng cao hơn nhưng file cũng lớn hơn.

Chuyển thêm định dạng PNG

Nếu muốn chuyển cả PNG, chỉ cần sửa điều kiện lọc:

if not file_name.lower().endswith(
    (".jpg", ".jpeg", ".png")
):
    continue

Có thể nâng cấp thêm

Từ đoạn mã này, bạn có thể phát triển thêm nhiều tính năng khác như:

  • Resize ảnh trước khi chuyển đổi.
  • Thêm watermark tự động.
  • Đổi tên file theo chuẩn SEO.
  • Giữ nguyên cấu trúc thư mục.
  • Bỏ qua các ảnh đã chuyển trước đó.
  • Xử lý nhiều thư mục cùng lúc.
Mẹo: Nếu cần tối ưu ảnh cho website, bạn nên giữ quality = 80 – 85. Đây là mức thường được sử dụng để cân bằng giữa tốc độ tải trang và chất lượng hiển thị.

Kết luận

Đây là một đoạn mã Python nhỏ nhưng khá hữu ích khi cần tối ưu số lượng lớn hình ảnh. Thay vì chuyển đổi từng file bằng phần mềm, bạn chỉ cần thay đổi đường dẫn thư mục và chạy chương trình để xử lý toàn bộ ảnh trong vài giây. Nếu thường xuyên làm việc với website, AI hoặc xử lý dữ liệu hình ảnh, bạn cũng có thể mở rộng đoạn mã này để tự động resize, thêm watermark hoặc đổi tên ảnh theo quy tắc riêng.

Xem thêm các bài viết khác:
Python: Resize Hàng Loạt Ảnh (Kèm Mã Nguồn)

Hướng dẫn cài đặt, sử dụng Pycharm lập trình Python

10 Đoạn Mã Python Hữu Ích Mà Lập Trình Viên Nên Lưu Lại

Hướng dẫn Python đổi Tên Hàng Loạt Ảnh (Kèm Mã Nguồn)

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *