Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การกรองรูปภาพตามคุณสมบัติขนาดใน Python?


Python มีไลบรารี่มากมายสำหรับการประมวลผลภาพ รวมถึง Pillow, Python Imaging library, scikit-image หรือ OpenCV

เราจะใช้ไลบรารี่ Pillow สำหรับการประมวลผลภาพที่นี่ เนื่องจากมีขั้นตอนมาตรฐานหลายขั้นตอนสำหรับการจัดการภาพ และรองรับช่วงของรูปแบบไฟล์ภาพ เช่น jpeg, png, gif, tiff, bmp และอื่นๆ

ไลบรารี่ Pillow สร้างขึ้นบน Python Imaging Library (PIL) และมีคุณสมบัติมากกว่าไลบรารีพาเรนต์ (PIL)

การติดตั้ง

เราสามารถติดตั้งหมอนโดยใช้ pip ได้ ดังนั้นเพียงพิมพ์ follow ใน command terminal −

$ pip install pillow

การใช้งานหมอนขั้นพื้นฐาน

มาลองใช้งานภาพขั้นพื้นฐานกันโดยใช้คลังหมอนกันเถอะ

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)

ผลลัพธ์

การกรองรูปภาพตามคุณสมบัติขนาดใน Python?

JPEG
RGB
(2048, 1365)
None

กรองภาพตามขนาด

โปรแกรมด้านล่างจะลดขนาดของรูปภาพทั้งหมดจากพาธเฉพาะ (พาธเริ่มต้น:ไดเร็กทอรีการทำงานปัจจุบัน) เราสามารถเปลี่ยน max_height, max_width หรือนามสกุลของรูปภาพในโปรแกรมด้านล่าง:

รหัส

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))

ผลลัพธ์

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

เมื่อเรียกใช้สคริปต์ข้างต้น ขนาดของรูปภาพที่มีอยู่ในไดเรกทอรีการทำงานปัจจุบัน (ซึ่งปัจจุบันคือโฟลเดอร์สคริปต์ pyton) จะมีขนาดสูงสุด 900 (ความกว้าง/ความสูง)