Python: Resize Hàng Loạt Ảnh (Kèm Mã Nguồn)

Khi cần tối ưu ảnh cho website, chuẩn bị dữ liệu AI hoặc resize hàng trăm ảnh sản phẩm, việc chỉnh sửa từng ảnh sẽ tốn khá nhiều thời gian. Với Python và Pillow, bạn chỉ cần một đoạn mã ngắn để thay đổi kích thước toàn bộ ảnh trong một thư mục và lưu kết quả sang thư mục mới.

Bài viết này cung cấp đoạn mã hoàn chỉnh, những thông số bạn cần chỉnh trước khi chạy và cách xử lý một số lỗi phổ biến.

Phù hợp khi bạn cần:

  • Resize hàng loạt ảnh sản phẩm.
  • Tối ưu ảnh trước khi tải lên website.
  • Chuẩn bị dữ liệu cho AI hoặc Machine Learning.
  • Chuẩn hóa kích thước nhiều ảnh cùng lúc.

Yêu cầu: Cài đặt Pillow một lần trước khi chạy chương trình.

pip install pillow

Đoạn mã dưới đây sẽ:

  • Đọc toàn bộ ảnh trong thư mục nguồn.
  • Resize về kích thước bạn chỉ định.
  • Lưu kết quả sang thư mục mới.
  • Giữ nguyên tên file và ảnh gốc.

Đoạn mã hoàn chỉnh

from PIL import Image
import os

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

width = 1200
height = 800

os.makedirs(output_folder, exist_ok=True)

for file_name in os.listdir(input_folder):

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

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

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

with Image.open(input_path) as image:

    resized = image.resize(
        (width, height),
        Image.Resampling.LANCZOS
    )

    resized.save(
        os.path.join(output_folder, file_name)
    )
```

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

Lưu ý:

  • Ảnh gốc sẽ không bị ghi đè.
  • Thư mục Resized sẽ được tạo tự động nếu chưa tồn tại.
  • Chương trình chỉ xử lý các định dạng JPG, JPEG, PNG, WebP và BMP.

Trước khi chạy, bạn thường chỉ cần sửa 3 chỗ

Thư mục chứa ảnh

Đổi đường dẫn tại biến input_folder thành thư mục chứa ảnh của bạn.

input_folder = r"D:\Images"

Thư mục lưu ảnh sau khi resize

Nếu muốn lưu kết quả sang thư mục khác, hãy thay đổi biến output_folder.

output_folder = r"D:\Resized"

Kích thước ảnh

Điều chỉnh hai biến width và height theo nhu cầu.

width = 1200
height = 800

Kết quả

Sau khi chạy, chương trình sẽ đọc toàn bộ ảnh trong thư mục Images, resize về kích thước 1200 × 800 và lưu kết quả vào thư mục Resized. Ảnh gốc vẫn được giữ nguyên nên bạn có thể thay đổi thông số và chạy lại bất cứ lúc nào.

Images/
├── 001.jpg
├── 002.jpg
└── 003.jpg

↓

Resized/
├── 001.jpg (1200 × 800)
├── 002.jpg (1200 × 800)
└── 003.jpg (1200 × 800)

Nếu gặp lỗi, hãy kiểm tra

  • ModuleNotFoundError: Pillow chưa được cài đặt. Hãy chạy lại lệnh pip install pillow.
  • FileNotFoundError: Kiểm tra lại đường dẫn của input_folder và output_folder.
  • Không mở được ảnh: Đảm bảo thư mục chỉ chứa các định dạng JPG, JPEG, PNG, WebP hoặc BMP.

Kết luận

Resize hàng loạt ảnh bằng Python giúp tiết kiệm đáng kể thời gian khi phải xử lý nhiều hình ảnh cùng lúc. Sau khi thay đổi đường dẫn và kích thước mong muốn, bạn có thể áp dụng ngay đoạn mã này cho ảnh sản phẩm, dữ liệu AI hoặc tối ưu ảnh trước khi tải lên website.

Nếu cần tự động hóa nhiều hơn, bạn có thể kết hợp script này với các bài như chuyển JPG sang WebP, đổi tên hàng loạt file hoặc thêm watermark hàng loạt để xây dựng quy trình xử lý ảnh hoàn chỉnh bằng Python.

Xem thêm nhiều bài khác hữu ích khác:

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

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

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

Để 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 *