Use Python para comprimir el tamaño de la imagen en lotes (no cambie el tamaño de la imagen, no cambie el formato de la imagen)

A menudo necesitamos insertar una gran cantidad de imágenes en algunos archivos como Word, Excel, PPT, etc., pero la memoria de cada imagen no es pequeña, y si la acumulación es demasiado grande, la memoria del archivo es demasiado grande , lo que hace que los clientes no puedan abrir el archivo. Abra el archivo, ¡entonces podemos comprimir la memoria de la imagen! !

¡También encontré muchas soluciones y finalmente lo resolví! A continuación, ¡solo sigue la pintura de la calabaza! !

El primer paso es preparar dos carpetas.

Carpeta 1 [Imagen original]

Carpeta 2 [después de la compresión]

inserte la descripción de la imagen aquí

El segundo paso, la biblioteca que necesita ser instalada

biblioteca Instalar
PIL pip instalar almohada

código:

compressImage(r".\Original image", r".\Compressed"), hay dos parámetros en total, uno es el archivo original y el otro es para almacenar la imagen comprimida

from PIL import Image
import os
import os.path


def picIsCorrect(fileSuffix):
    if fileSuffix == ".png" or fileSuffix == ".jpg" or fileSuffix == ".jpeg":
        return True
    else:
        return False


def compressImage(srcPath, dstPath):
    for filename in os.listdir(srcPath):
        if not os.path.exists(dstPath):
            os.makedirs(dstPath)

        srcFile = os.path.join(srcPath, filename)
        dstFile = os.path.join(dstPath, filename)

        # print(srcFile)
        # print(dstFile)

        srcFiledirName = os.path.dirname(srcFile)
        basename = os.path.basename(srcFile)  # 获得文件全称 例如  migo.png
        filename, fileSuffix = os.path.splitext(
            basename)  # 获得文件名称和后缀名  例如 migo 和 png

        if os.path.isfile(srcFile) & picIsCorrect(fileSuffix):
            try:
                sImg = Image.open(srcFile).convert('RGB')
                w, h = sImg.size
                # print(w, h)
                dImg = sImg.resize((int(w / 2), int(h / 2)), Image.ANTIALIAS)
                dImg.convert('RGB').save(dstFile)
                print(dstFile + "压缩完成!!")
            except (IOError, ZeroDivisionError) as e:
                print(e.message)

        if os.path.isdir(srcFile):
            compressImage(srcFile, dstFile)


if __name__ == '__main__':
    compressImage(r".\png", r".\test")

Efecto:

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

vídeo de demostración

Por favor agregue una descripción de la imagen

Documento de referencia 1: Materiales de referencia

Documento de referencia 2: Materiales de referencia

Espero que pueda ser de ayuda para todos, si hay algún error, por favor corríjanme.

Un pequeño programador dedicado a la ofimática

¡Espero obtener [un seguimiento gratuito] de todos! agradecido

Supongo que te gusta

Origin blog.csdn.net/weixin_42636075/article/details/131580456
Recomendado
Clasificación