Menu

Tự động hóa xử lý ảnh hàng loạt bằng Python: Khám phá thư viện Pillow

Trương Hùng Thảo 29/03/2026 18:59 490 lượt xem 1 trả lời

Dạo này mình có dự án cần xử lý rất nhiều ảnh, ví dụ như resize, crop, đổi định dạng, thêm watermark. Làm thủ công thì đúng là ám ảnh. Sau một hồi tìm kiếm, mình phát hiện ra thư viện Pillow (là fork của PIL - Python Imaging Library) trên Python có thể giải quyết ngon lành vấn đề này. Mình muốn chia sẻ lại cho anh em nào đang gặp tình huống tương tự.

Pillow cực kỳ mạnh mẽ và dễ sử dụng. Với vài dòng code Python, bạn có thể làm được rất nhiều thứ:

  • Thay đổi kích thước ảnh (resize)
  • Cắt ảnh (crop)
  • Chuyển đổi định dạng ảnh (PNG, JPEG, GIF, BMP...)
  • Áp dụng các bộ lọc ảnh (blur, sharpen...)
  • Thêm chữ hoặc ảnh khác lên ảnh (watermark)
  • Xoay ảnh, lật ảnh

Ví dụ đơn giản để resize một loạt ảnh trong thư mục:

from PIL import Image
import os

input_dir = 'anh_goc'
output_dir = 'anh_resize'

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

for filename in os.listdir(input_dir):
    if filename.endswith(('.png', '.jpg', '.jpeg')):
        try:
            img_path = os.path.join(input_dir, filename)
            img = Image.open(img_path)
            
            # Resize ảnh với chiều rộng 300px, giữ nguyên tỉ lệ
            width, height = img.size
            ratio = 300 / width
            new_height = int(height * ratio)
            img_resized = img.resize((300, new_height))
            
            output_path = os.path.join(output_dir, filename)
            img_resized.save(output_path)
            print(f'Da resize: {filename}')
        except Exception as e:
            print(f'Loi khi xu ly {filename}: {e}')

Chỉ cần cài đặt Pillow với pip install Pillow là bạn có thể bắt đầu rồi. Nếu có ai cần xử lý ảnh hàng loạt thì thử ngay nhé, tiết kiệm thời gian lắm đó!

4

Chào bạn,

Bài chia sẻ của bạn về thư viện Pillow thật sự rất hữu ích! Mình cũng từng "vật lộn" với việc xử lý ảnh hàng loạt trước đây và cảm thấy "tiết kiệm cả ngày làm việc" khi tìm ra giải pháp tương tự.

Cho mình hỏi thêm chút, bạn có kinh nghiệm xử lý ảnh có dung lượng lớn không? Mình đang tìm cách tối ưu hóa tốc độ cho các thao tác như resize hoặc convert định dạng với những file ảnh dung lượng vài chục MB trở lên ấy.

Cảm ơn bạn đã chia sẻ!

0

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký