开头BB几句

近发现网站图片加载速度太慢了,严重影响了页面的加载速度。于是我决定写一个简单的python程序来批量生成压缩图。刚好也是为了之后的相片墙做准备。

程序挺简单的,下面就来简单分析一下吧~

所需模块

pillow

pillow是python中一个非常优秀的图形处理模块,它提供了丰富的函数来实现图片处理,基本上相当于一个python版的简易ps了(然而不是图形用户界面的2333)。

要想安装pillow,可以直接使用pip安装。

pip3 install pillow

等进度条加载完毕就安装好啦~

可以在IDLE中尝试导入pillow来检测是否安装成功

import PIL

在本次程序中,我们需要只需要用到以下几个pillow的函数:

  1. open(dir)
  2. save(dir,format)
  3. thumbnail((x,y))

其中最重要的便是thumbnail函数,这个函数可以自动帮我们完成图像的压缩成x,y的大小。

open和save就是打开和保存函数了,save的第二个参数是图片保存的类型,如果是JPG格式的需要改为'JPEG',需要注意下,也可以直接访问图像对象的format属性放进去,这个属性就是图片的格式。

glob

glob模块是python的内置模块,用于批量打开一个目录下的符合条件的文件(即传入一个正则表达式)。例如下面那个可以访问到所有.png结尾的文件并创建一个列表。

glob.glob(r"*.png")

然而我没认真学过正则表达式所以感觉我的处理方法挺蠢的2333

easygui

简单的图形用户界面。主要是为了方便打开目录而不用手动输入DA★ZE

程序细节

压缩效果:

程序会在目标路径下面创建一个Image_thumbnail的文件夹来放压缩好的图片。

我目前设定是大于700K的文件图片尺寸会被压缩到以前的一半,小于700k的图片尺寸不变。

暂时还不能自定义压缩后的尺寸,以后看情况会加上。

下一步的打算是在我的网站中添加一个照片墙,类似p站那样子的。而这必然少不了大量的压缩后的图片。要不然加载就太太太太太太慢了。。。。。。

源码下载

我已经将这个代码push到github上了哦~有需要的小伙伴自行fork


You Are All Stardust.