如何用Python 代码批量压缩500 张图片

发布时间:2021-12-02 17:38:35 作者:柒染
来源:亿速云 阅读:320

本篇文章给大家分享的是有关如何用Python 代码批量压缩500 张图片,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

这几天,我在用 Github page + hexo  搭建个人网站,为了延续风格,就想把配图与文章一起迁移过去。这时候就出现了一个难题:我所用的图片都是高清大图,放到网站上会严重拖慢加载速度。因此,需要先把图片压缩,再上传。

我把需求概括如下:

按着这几条线索,我搜索“批量压缩图片”、“图片压缩工具“、”批量处理图片“……

开始的想法是找轻量级的图片压缩工具,简单处理一下就好。然而不知是搜索的姿势不对,还是筛选过滤信息的姿势不对,结果都差强人意。

查找到的工具有本地与在线两类,可试验后都不太理想:有的软件下载后才发现是付费的,有的在使用时直接导致程序卡死,有的压缩率不够需要多次压缩,有的要求原始图片大小不能超过 5 M,有的要求批量处理数量不超过 20 张,有的不支持批量压缩……群内小伙伴还帮忙推荐了“PS+批处理”、acdsee、甚至手机应用 snapseed,都不合我意。

花了不少时间后,偶然看到有文章写用 Python 来压缩图片。一文惊醒梦中人,我怎么没想到呢?

PIL 是个强大的图片处理库,但只支持 Python 2,而且早已停止更新。有开发者在它基础上改良并维护了 Pillow,支持 Python 3。之前有所耳闻,没用过。于是查了几篇教程和文档。读后发现它压缩图片的方法主要是等比例缩放、裁剪以及改变格式等,并非我所要的。

最后,终于找到了一种非常便捷,又十分满足的方案,下面开始进入正题了。(不要嫌我啰嗦,探索的过程也很有趣)(嘘,实际上是因为下面要介绍的方法太简单,才区区几行代码,我实在忍不住强行加戏……)

----------------小心翼翼的分割线---------------

Tinypng 网站提供在线图片压缩服务,是所有图片压缩工具中最好用的之一,但有限制:批量最多处理 20 张,且每张大小不允许超过 5M。

如何用Python 代码批量压缩500 张图片  

这个网站非常良心,开放了免费的 API ,API 取消了每张大小的限制,只限定每个月处理 500 张图片。这对我来说,已经足足有余了。

下面介绍怎么使用它。第一步是在它网站上注册,获得专属的 API_KEY。使用的是邮箱注册,很简单。

然后是安装 package:

pip install --upgrade tinify
 
如何用Python 代码批量压缩500 张图片  

接着是处理图片:

import tinify
import os

tinify.key = '此处填入你的key'
path = "C:\\Users\\yunpoyue\\Pictures\\cat" # 图片存放的路径

for dirpath, dirs, files in os.walk(path):
    for file in files:
        imgpath = os.path.join(dirpath, file)
        print("compressing ..."+ imgpath)
        tinify.from_file(imgpath).to_file(imgpath)
 

不到 10 行代码,轻轻松松就批量压缩图片,简直不要太爽!20 M 的图片能压缩到 2 M,压缩率达到惊人的 90%,成绩喜人。

它的API还提供图片裁剪、加水印、保存压缩图片至云服务商(亚马逊云、谷歌云)等功能,非常强大。除压缩过程有点慢,其它无可挑剔。

经过一番探索与比较,我确定这是目前的最优方案,所以强烈分享给大家。

以上就是如何用Python 代码批量压缩500 张图片,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

推荐阅读:
  1. Python如何用5行代码实现批量抠图
  2. 如何使用python实现图片批量压缩程序

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:如何使用Matplotlib创建饼图

下一篇:tk.Mybatis插入数据获取Id怎么实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》