赞
踩
在日常的编程工作中,我们经常需要处理图像,例如上传、下载、显示、编辑等。有时候,我们需要对图像进行压缩,以减少占用的空间和带宽,提高加载速度和用户体验。那么,如何用Python来实现图像压缩呢?
平均一张图片的大小约23.4kb 总大小压缩到了1/10。明显减少服务器的空间和宽带压力。
使用PIL库 需要安装Pillow库 pip install Pillow
具体代码如下:
from PIL import Image import os def getfilenames(mulu): #获取文件夹目录下的多个文件名 filenames=[] for filename in os.listdir(mulu): filenames.append(filename) return filenames def yasuo(tupian): #图片压缩 try: img=Image.open(tupian) print(img.size[1]) 宽=img.size[0] #图片宽度 高=img.size[1] #图片高度 if 宽 > 高: #判读图片竖图还是横图 print("横图") newimg=img.convert("RGB") newimg = newimg.resize((400, 300)) #如果是横图就按4:3压缩 可自己按需设计大小 else: print("竖图") newimg = img.convert("RGB") newimg = newimg.resize((300, 400)) #如果是竖图就按3:4压缩 newimg.save(tupian) #保存并覆盖原来的图片 except IOError as e: print(e) if "__main__" == __name__: mulv = r'D:\pycharm\pythonProject1\爬虫\2023-12-13' #指定图片目录 file_names = getfilenames(mulv) for filename1 in file_names: tupian = "D:/pycharm/pythonProject1/爬虫/2023-12-13/" + filename1 #构造图片地址 yasuo(tupian) #进行压缩 print('压缩成功')
小知识:
如果要指定保存的格式,可以传入format参数,例如:
img.save("new.png", format="PNG")
如果要指定保存的质量,可以传入quality参数,取值范围是1-95,默认是75。质量越高,文件越大,压缩效果越差;质量越低,文件越小,压缩效果越好。例如:
img.save("new.jpg", quality=50)
size属性:返回一个元组,表示图像的宽度和高度(单位是像素),例如(800, 600)。
format属性:返回一个字符串,表示图像的格式,例如"JPEG"。
mode属性:返回一个字符串,表示图像的模式,例如"RGB"。
print(img.size) # (800, 600)
print(img.format) # JPEG
print(img.mode) # RGB
resize方法:接受一个元组作为参数,表示新的宽度和高度(单位是像素),返回一个新的Image对象,例如:
new_img = img.resize((400, 300))
convert方法:接受一个字符串作为参数,表示新的模式,返回一个新的Image对象,例如:
new_img = img.convert("L")
transpose方法:接受一个常量作为参数,表示旋转或翻转的方式,返回一个新的Image对象,例如:
#旋转90度
new_img = img.transpose(Image.ROTATE_90)
image = image.convert() 是图像实例对象的一个方法,接受一个 mode 参数,用以指定一种色彩模式
有九种不同模式:
1: 1位像素,黑白,每字节一个像素存储
L: 8位像素,黑白
P: 8位像素,使用调色板映射到任何其他模式
RGB: 3x8位像素,真彩色
RGBA: 4x8位像素,带透明度掩模的真彩色
CMYK: 4x8位像素,分色
YCbCr: 3x8位像素,彩色视频格式
I: 32位有符号整数像素
F: 32位浮点像素
博主使用的是image.convert(“RGB”) 图片体积小且有色彩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。