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]
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: