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 đó!