Computer >> Máy Tính >  >> Lập trình >> Python

Lọc hình ảnh dựa trên thuộc tính kích thước trong Python?

Python cung cấp nhiều thư viện để xử lý hình ảnh bao gồm thư viện Pillow, Python Imaging, scikit-image hoặc OpenCV.

Chúng tôi sẽ sử dụng thư viện Pillow để xử lý hình ảnh ở đây vì nó cung cấp nhiều quy trình tiêu chuẩn để xử lý hình ảnh và hỗ trợ nhiều định dạng tệp hình ảnh như jpeg, png, gif, tiff, bmp và các định dạng khác.

Thư viện Pillow được xây dựng dựa trên Thư viện ảnh Python (PIL) và cung cấp nhiều tính năng hơn so với thư viện mẹ của nó (PIL).

Cài đặt

Chúng ta có thể cài đặt gối bằng pip, vì vậy chỉ cần nhập lệnh sau vào terminal lệnh -

$ pip install pillow

Thao tác cơ bản trên gối

Hãy là một số thao tác cơ bản trên hình ảnh bằng thư viện gối.

from PIL import Image
image = Image.open(r"C:\Users\rajesh\Desktop\imagefolder\beach-parga.jpg")
image.show()
# The file format of the source file.
# Output: JPEG
print(image.format)

# The pixel format used by the image. Typical values are “1”, “L”, “RGB”, or “CMYK.”
# Output: RGB
print(image.mode)

# Image size, in pixels. The size is given as a 2-tuple (width, height).
# Output: (2048, 1365)
print(image.size)


# Colour palette table, if any.
#Output: None
print(image.palette)

Đầu ra

Lọc hình ảnh dựa trên thuộc tính kích thước trong Python?

JPEG
RGB
(2048, 1365)
None

Lọc hình ảnh dựa trên kích thước

Chương trình dưới đây sẽ giảm kích thước của tất cả các hình ảnh từ một đường dẫn cụ thể (đường dẫn mặc định:thư mục làm việc hiện tại). Chúng tôi có thể thay đổi max_height, max_width hoặc phần mở rộng của hình ảnh trong chương trình cho sẵn dưới đây:

import os
from PIL import Image

max_height = 900
max_width = 900
extensions = ['JPG']

path = os.path.abspath(".")
def adjusted_size(width,height):
   if width > max_width or height>max_height:
      if width > height:
         return max_width, int (max_width * height/ width)
      else:
         return int (max_height*width/height), max_height
   else:
      return width,height

if __name__ == "__main__":
   for img in os.listdir(path):
      if os.path.isfile(os.path.join(path,img)):
         img_text, img_ext= os.path.splitext(img)
         img_ext= img_ext[1:].upper()
         if img_ext in extensions:
            print (img)
            image = Image.open(os.path.join(path,img))
            width, height= image.size
            image = image.resize(adjusted_size(width, height))
            image.save(os.path.join(path,img))

Đầu ra

another_Bike.jpg
clock.JPG
myBike.jpg
Top-bike-wallpaper.jpg

Khi chạy tập lệnh trên, kích thước của hình ảnh có trong thư mục làm việc hiện tại (hiện là thư mục tập lệnh pyton), sẽ có kích thước tối đa là 900 (chiều rộng / chiều cao).