Python avanzado obtiene recursivamente todas las imágenes con el nombre de sufijo especificado en la carpeta especificada y comprime el tamaño de archivo de todas las imágenes especificadas correspondientemente

Python avanzado obtiene recursivamente todas las imágenes con el nombre de sufijo especificado en la carpeta especificada y comprime el tamaño de archivo de todas las imágenes especificadas correspondientemente

Tabla de contenido

Python avanzado obtiene recursivamente todas las imágenes con el nombre de sufijo especificado en la carpeta especificada y comprime el tamaño de archivo de todas las imágenes especificadas correspondientemente

1. Breve introducción

En segundo lugar, el principio de realización.

3. Asuntos que requieren atención

4. Vista previa del efecto

5. Pasos de implementación

6. Código clave


1. Breve introducción

Python es un lenguaje de programación de computadoras multiplataforma. Es un lenguaje tipado dinámicamente orientado a objetos, originalmente diseñado para escribir scripts de automatización (shells), y con la actualización continua de versiones y la adición de nuevas características del lenguaje, más se usa para el desarrollo de software independiente y de gran tamaño. proyectos a escala. Python es un lenguaje de secuencias de comandos interpretado que se puede utilizar en los siguientes campos: desarrollo web e Internet, computación y estadísticas científicas, inteligencia artificial, educación, desarrollo de interfaz de escritorio, desarrollo de software, desarrollo back-end, rastreo web.

Aquí hay una introducción para obtener recursivamente todos los archivos en la carpeta especificada y comprimir el tamaño del tipo especificado de archivos de imagen. Aquí, imgae en Pillow se usa para comprimir imágenes de tipo jpg y png. Aquí hay una breve introducción. El método es no único Para un mejor método, deje un mensaje para agregar.

Entorno operativo:

  • 1, ganar 10
  • 2, pitón 3.8
  • 3, pycharm 2022.1.3
     

En segundo lugar, el principio de realización.

1. os.listdir lee todos los archivos en la carpeta, si es el archivo os.path.isfile, y los archivos de imagen de tipo de sufijo jpg y png especificados, se realiza la compresión de imagen correspondiente

2. Si es una carpeta, se puede procesar recursivamente en el primer paso

3. Uso de imagen de importación PIL, imagen para compresión de imagen

3. Asuntos que requieren atención

1. Desde Python 3.8, el complemento Pillow está instalado en el entorno y Pillow contiene PIL

2. Configure la calidad de compresión de la imagen según sus necesidades

4. Vista previa del efecto

1. El tamaño de archivo correspondiente antes de descomprimir

 2. Tamaño de archivo correspondiente después de la compresión

 

 

5. Pasos de implementación

1. Prepare carpetas e imágenes del entorno, agregue 1 carpeta en la carpeta TestImageFolder, 2.txt, img1.jpg e img2.png, y luego 1 carpeta, agregue img1.jpg e img2.png

 

2. Primero, implemente la lectura recursiva de archivos en la carpeta, principalmente relacionados con os.listdir

2. A continuación, image.open abre la imagen y save la comprime y la guarda.

 

3. Filtra y comprime archivos de imagen con el sufijo jpg y png

 

4. Especifique la carpeta de imágenes, puede comprimir recursivamente la imagen y el resultado de la compresión es el siguiente

6. Código clave

import os
from PIL import Image


def recursiveGetFilesFromFolder(folderPath, fileHandler):
    """
    递归获取文件夹下的文件,并做对应处理
    :param folderPath: 文件夹路径
    :param fileHandler: 对文件的处理函数
    :return:
    """
    pathDir = os.listdir(folderPath)
    print("pathDir = ", pathDir)
    for fileOrDir in pathDir:
        fileOrDirPath = os.path.join('%s\%s' % (folderPath, fileOrDir))
        print("fileOrDirPath = " + fileOrDirPath)
        if os.path.isfile(fileOrDirPath):
            if fileHandler:
                fileHandler(fileOrDirPath)
            continue
        # 是文件夹,则递归处理
        recursiveGetFilesFromFolder(fileOrDirPath, fileHandler)


def compressImageFile(filePath, quality):
    """
    进行图片文件压缩处理
    :param filePath: 文件路径
    :param quality: 压缩图片质量 1-100
    :return:
    """
    im = Image.open(filePath)
    # quality 是设置压缩比
    im.save(filePath, quality=quality)
    im.close()


def handleImageFile(filePath):
    """
    处理 jpg png 后缀的文件
    :param filePath:文件路径
    :return:
    """
    if filePath.endswith(".jpg") or filePath.endswith(".png"):
        compressImageFile(filePath, 20)


def test():
    recursiveGetFilesFromFolder(r'E:\Study\z_tmp\TestImageFolder', handleImageFile)


if __name__ == '__main__':
    test()

Supongo que te gusta

Origin blog.csdn.net/u014361280/article/details/125965751
Recomendado
Clasificación