Công nghệ Mẹo vặt Web

Tạo ảnh thumbnails với python

Table of Content

Tạo ảnh thumbnails với python

Tình hình là mình đang có ý tưởng làm cái app cho mọi người tạo bản đồ nghệ thuật (map art), ảnh xuất ra có thể vài MB đến chục MB, do vậy muốn show lên xem trước thì cần thumbnails giảm dung lượng, kích thước để load được trên Web cho nhẹ, nhanh. Thế là mình viết cái hàm này, cũng cóp nhặt tùm lum. Giờ muốn chia sẻ lại với mọi người.

Hàm này mình viết cho nó tự động tính toán cạnh còn lại dựa trên một cạnh làm chuẩn, tránh trường hợp set cứng dài rộng không đúng ratio làm lệch hình của chúng ta.

Mã nguồn

import cv2
import glob
def thumbnail(filename,thumb_w):
    try:
        # Load just once, then successively scale down
        # Chiều rộng thumb
        # thumb_w = 1000
        img = cv2.imread(filename)
        height, width, channels = img.shape
        print(height, width, channels)
        # Tính tỉ lệ dài rộng ảnh gốc
        wpercent = (thumb_w/width)
        # Ước tính chiều dài ảnh thumb từ tỉ lệ
        hsize = int((float(height)*float(wpercent)))
        
        img = cv2.resize(img, (thumb_w,hsize))
        cv2.imwrite('/work/DEV/longdt/project/rdesk/public/output/e4b722aaeb11472bbd28d255da2ce09b_thumb.png', img) 
        return 'OK'
    except Exception as e: 
        return e 

thumbnail('/work/DEV/longdt/project/rdesk/public/output/e4b722aaeb11472bbd28d255da2ce09b.png',300)

Kết quả

image

Tham khảo

  1. https://stackoverflow.com/questions/8631076/what-is-the-fastest-way-to-generate-image-thumbnails-in-python
  2. https://stackoverflow.com/questions/19098104/python-opencv2-cv2-wrapper-to-get-image-size
  3. https://www.codegrepper.com/code-examples/python/auto+resize+image+python

Leave a Reply

Your email address will not be published. Required fields are marked *