当前位置:   article > 正文

利用python批量压缩图教程:如何轻松减小图片大小_python批量压缩图片

python批量压缩图片

在日常的编程工作中,我们经常需要处理图像,例如上传、下载、显示、编辑等。有时候,我们需要对图像进行压缩,以减少占用的空间和带宽,提高加载速度和用户体验。那么,如何用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('压缩成功')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

小知识:

如果要指定保存的格式,可以传入format参数,例如:

img.save("new.png", format="PNG")
  • 1

如果要指定保存的质量,可以传入quality参数,取值范围是1-95,默认是75。质量越高,文件越大,压缩效果越差;质量越低,文件越小,压缩效果越好。例如:

img.save("new.jpg", quality=50)
  • 1

size属性:返回一个元组,表示图像的宽度和高度(单位是像素),例如(800, 600)。
format属性:返回一个字符串,表示图像的格式,例如"JPEG"。
mode属性:返回一个字符串,表示图像的模式,例如"RGB"。

print(img.size) # (800, 600)
print(img.format) # JPEG
print(img.mode) # RGB
  • 1
  • 2
  • 3

resize方法:接受一个元组作为参数,表示新的宽度和高度(单位是像素),返回一个新的Image对象,例如:

new_img = img.resize((400, 300))
  • 1

convert方法:接受一个字符串作为参数,表示新的模式,返回一个新的Image对象,例如:

new_img = img.convert("L")
  • 1

transpose方法:接受一个常量作为参数,表示旋转或翻转的方式,返回一个新的Image对象,例如:

#旋转90度
new_img = img.transpose(Image.ROTATE_90)
  • 1
  • 2

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”) 图片体积小且有色彩

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号