¿Cómo comprimir imágenes usando Python y PIL?

Hay organizaciones que reciben datos de lakhs o más personas, que son principalmente en forma de texto, con algunas imágenes. La mayoría de ustedes sabe que la parte del texto se almacena en bases de datos en forma de tablas, pero ¿qué pasa con las imágenes? Las imágenes son pequeñas en comparación con los datos textuales pero constituyen un espacio mucho mayor en términos de almacenamiento. Por lo tanto, para ahorrar espacio y seguir ejecutando los procesos sin problemas, solicitan a los usuarios que envíen las imágenes comprimidas. Como la mayoría de los lectores tienen un poco de experiencia en informática (ya sea en la escuela o la universidad), entienden que usar herramientas gratuitas en línea para comprimir imágenes no es una buena práctica para ellos.

Hasta Windows 7, Microsoft solía ofrecer MS Office Picture Manager, que podía usarse para comprimir imágenes hasta cierto punto, pero también tenía algunas limitaciones.

Aquellos que conocen un poco de python pueden instalar python y usar pip install pillow en el símbolo del sistema (terminal para usuarios de Linux) para instalar pillow fork .

Obtendrás una pantalla como esta 

Reúna todos los archivos en una carpeta y mantenga el archivo Compress.py en la misma carpeta.

Ejecute el archivo python con python.

A continuación se muestra el código fuente del archivo:

Python3

# run this in any directory 
# add -v for verbose 
# get Pillow (fork of PIL) from
# pip before running -->
# pip install Pillow
  
# import required libraries
import os
import sys
from PIL import Image
  
# define a function for
# compressing an image
def compressMe(file, verbose = False):
    
      # Get the path of the file
    filepath = os.path.join(os.getcwd(), 
                            file)
      
    # open the image
    picture = Image.open(filepath)
      
    # Save the picture with desired quality
    # To change the quality of image,
    # set the quality variable at
    # your desired level, The more 
    # the value of quality variable 
    # and lesser the compression
    picture.save("Compressed_"+file, 
                 "JPEG", 
                 optimize = True, 
                 quality = 10)
    return
  
# Define a main function
def main():
    
    verbose = False
      
    # checks for verbose flag
    if (len(sys.argv)>1):
        
        if (sys.argv[1].lower()=="-v"):
            verbose = True
                      
    # finds current working dir
    cwd = os.getcwd()
  
    formats = ('.jpg', '.jpeg')
      
    # looping through all the files
    # in a current directory
    for file in os.listdir(cwd):
        
        # If the file format is JPG or JPEG
        if os.path.splitext(file)[1].lower() in formats:
            print('compressing', file)
            compressMe(file, verbose)
  
    print("Done")
  
# Driver code
if __name__ == "__main__":
    main()

Carpeta antes de la compresión:

Folder before running file

Carpeta antes de ejecutar el archivo

Línea de comando para ejecutar el código:

PD: ejecute el código después de ingresar al directorio.

Command Line for executing Code

Línea de comando para ejecutar código

Carpeta después de la ejecución del Código:

Folder after running code

Carpeta después de ejecutar el código

Puede ver claramente el archivo comprimido.

Publicación traducida automáticamente

Artículo escrito por avanishcodes 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 *