Filtrado de imágenes basado en atributos de tamaño en Python

Requisito previo: PIL_working-images-python

Dado un directorio de imágenes, nuestro programa creará un nuevo directorio de imágenes basado en el tamaño de umbral dado.

Una función simple de Python3 que ingresa la ruta del archivo python, el ancho del umbral en píxeles y la altura del umbral en píxeles, busca todas las imágenes presentes en ese único directorio y crea un nuevo directorio que filtra todas las imágenes de acuerdo con el tamaño del umbral dado. o lo redimensiona al ancho y alto del umbral dado.

Pasos a seguir :

1. Instale las bibliotecas necesarias como PIL
2. Importe bibliotecas: PIL, shutil, os, os.path
3. Guarde el código como sizeFilter.py
4. Abra la Terminal (donde el archivo python está presente y se ejecuta)-> python sizeFilter.py

 
A continuación se muestra la implementación de Python3 del enfoque anterior:

# Python3 program to Filtering Images
# based on Size Attributes 
from PIL import Image
from shutil import copyfile
import os, os.path
  
  
def filterImages(path, thresholdWidth, thresholdHeight):
      
    # Defining images array for
    # identifying only image files
    imgs = []
      
    # List of possible images extensions
    # add if you want more
    valid_images = [".jpg", ".gif", ".png", ".tga",
                    ".jpeg", ".PNG", ".JPG", ".JPEG"]
  
    # Storing all images in images array (imgs)
    for f in os.listdir(path):
        ext = os.path.splitext(f)[1]
          
        if ext.lower() not in valid_images:
            continue
        imgs.append(f)
  
    # Checking whether the filteredImages
    # directory exists or not
    directory = os.path.dirname('filteredImages' + path)
    if not os.path.exists(directory):
        os.makedirs(directory)
  
    # Defining filteredIMages array for
    # storing all the images we need
    filteredImages = []
      
    for i in imgs:
        image = Image.open(os.path.join(path, i))
          
        # Storing width and height of a image
        width, height = image.size
  
        # if only width exceeds the thresholdWidth
        if (width > thresholdWidth and
            height <= thresholdHeight):
                  
            image.resize((thresholdWidth, 
                        (thresholdWidth * height)
                                // width)).save(i)
  
        # if only height exceeds the thresholdHeight
        elif (width <= thresholdWidth and
              height > thresholdHeight):
                    
            image.resize(((thresholdHeight * width)
                        // height, thresholdHeight)).save(i)
  
        # if both the parameters exceeds
        # the threshold attributes
        elif (width > thresholdWidth and
              height > thresholdHeight):
                    
            image.resize((thresholdWidth, thresholdHeight)).save(i)
  
        copyfile(os.path.join(path, i),
                 os.path.join(path + '/filteredImages', i))
          
        filteredImages.append(i)
          
    # returning the filteredImages array
    return filteredImages
  
# Driver Code
if __name__ == '__main__':
      
    filteredImages = []
       
    # Enter the path of the python sizeFilter
    # file, the thresholdWidth(in pixels) and
    # thresholdHeight(in pixels)
    filteredImages = filterImages("/home/SahilKhosla/Desktop/Current Project", 1000, 1000)

 
Producción :

Publicación traducida automáticamente

Artículo escrito por sahilkhoslaa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *