前言
由于博客的图床图片都是原图上传到服务器自建的本地兰空图床上,偶然被群友吐槽怎么打开速度那么慢,要加载一大堆图片,还特别巨大(1M以上)。于是在建议下写了一个图片自动压缩的脚本,限制博客的图片只有几百K,画质损失也不大。*(由于是压缩完后写的,贴不了网站测试截图)
吐槽一下兰空图床的无效压缩(原图上传只是单纯修改一个后缀名,issues也不修)
我是本地自建的图床,目前脚本只是将兰空图床上传的原图压缩转换成尺寸小的webp。我建议使用兰空图床的用户可以按照我图中设置改成webp,虽然上传是无效的,但是不用修改脚本的格式内容。
功能
- 遍历指定目录下的所有文件夹和文件,筛选出其中的webp图片,并将它们压缩为指定质量的webp格式(如果你要压缩其他图片,请在脚本中增加图片格式,如:jpg/png)
- 直接替换文件夹内的原有图片。以避免造成数据库冲突
- 当新增图片时自动触发脚本进行压缩
- 添加异常处理,跳过图像文件损坏或者格式不正确导致的脚本中断
脚本使用Python中的Pillow库来处理图片。首先,确保你已经安装了Pillow库:
代码登录后可见
然后,可以使用以下Python脚本:
代码登录后可见
将 代码登录后可见替换为你要遍历的文件夹路径
在这个脚本中,代码登录后可见参数表示压缩质量。对于使用 代码登录后可见库保存为 代码登录后可见格式的图片,代码登录后可见参数控制压缩的质量水平,取值范围为0到100,其中0表示最低质量,100表示最高质量。质量越高,图像的细节保留得越好,但文件大小也会相应增加。通常,你可以根据实际需求调整质量参数,找到最适合你应用场景的平衡点。(个人建议60)
监控新增图片以及脚本开机自启动
使用inotify-tools(Linux)
- 首先,确保你的系统上安装了 代码登录后可见,它是用于监视文件系统变化的工具。
代码登录后可见
- 创建一个Shell脚本,该脚本监视目标文件夹的变化并在新文件出现时调用压缩脚本。
代码登录后可见
请将 代码登录后可见替换为要监视的目标文件夹的路径,并将 代码登录后可见替换为你的压缩脚本的路径。
- 将这个Shell脚本保存为 代码登录后可见并赋予执行权限。
代码登录后可见
- 运行 代码登录后可见脚本,它将监视目标文件夹并在有新文件出现时自动调用压缩脚本。
代码登录后可见
这样,每当目标文件夹中新增图片时,压缩脚本将会自动运行以压缩新添加的图片。
由于脚本执行关闭ssh连接会退出。如果你想让它在后台默默地运行,你可以使用 代码登录后可见命令将其挂起,这样即使你关闭了终端,脚本也会继续工作
代码登录后可见
这将使 代码登录后可见脚本在后台运行,并且不会受到终端关闭的影响。要停止后台运行的 代码登录后可见脚本,你可以使用 代码登录后可见命令将其关闭,如下所示:
代码登录后可见
然后找到其对应的进程ID,然后使用 代码登录后可见命令关闭它,比如:
代码登录后可见
这里的 代码登录后可见是 代码登录后可见脚本的进程ID。
监视脚本设置为开机启动
具体的步骤可能会因操作系统版本而异。以下是在Ubuntu上设置开机启动的一种方法:
- 创建一个启动脚本,比如 代码登录后可见,内容如下:
代码登录后可见
确保将 代码登录后可见替换为你的脚本所在的实际路径,并给脚本赋予执行权限:
代码登录后可见
- 编辑 代码登录后可见文件:
代码登录后可见
在文件的末尾,添加以下行,指向刚刚创建的启动脚本:
代码登录后可见
确保将 代码登录后可见替换为你创建的启动脚本的实际路径。
- 保存并关闭 代码登录后可见文件。
现在,监视器脚本将会在系统启动时自动运行。