Python将图片批量从png格式转换至WebP格式


Posted in Python onAugust 22, 2020

实现效果

将位于/img目录下的1000张.png图片,转换成.webp格式,并存放于img_webp文件夹内。

Python将图片批量从png格式转换至WebP格式
源图片目录

Python将图片批量从png格式转换至WebP格式
目标图片目录

关于批量生成1000张图片,可以参考这篇文章:利用Python批量生成任意尺寸的图片

实现示例

import glob
import os
import threading

from PIL import Image


def create_image(infile, index):
 os.path.splitext(infile)
 im = Image.open(infile)
 im.save("img_webp/webp_" + str(index) + ".webp", "WEBP")


def start():
 index = 0
 for infile in glob.glob("img/*.png"):
  t = threading.Thread(target=create_image, args=(infile, index,))
  t.start()
  t.join()
  index += 1


if __name__ == "__main__":
 start()

注意:该项目需要引用PIL库。

考虑到是大量的线性密集型运算,因此使用了多线程并发。通过threading.Thread()创建线程对象时注意,args参数仅接受元祖。

在这里,我们使用Image.open()函数打开图像。

最终调用save("img_webp/webp_" + str(index) + ".webp", "WEBP")方法,以指定格式写入指定位置。其中format参数为目标格式。

下面是其他网友的补充

WebP与PNG, JPEG的转换

webp文件是的谷歌制定的文件,编码和解码当然要用谷歌自己提供的工具libwebp,别整那些有的没的的方法。
如果再pc上的浏览器(如Chrome,Edge等)打开微信的推送,爬虫爬取到图片可能就是webp格式的

1、下载对应平台的libwebp

2、解压得到二进制文件,在bin目录下(编程的使用include和lib目录下的文件),以下是以windows 64bit为例,摘自readme.txt。详细的可以使用-h选项查看具体的用法。

path/to/file description
bin/cwebp.exe encoding tool
bin/dwebp.exe decoding tool
bin/gif2webp.exe gif conversion tool
bin/vwebp.exe webp visualization tool
bin/webpinfo.exe webp analysis tool
lib/ static libraries
include/webp headers
test.webp a sample WebP file
test_ref.ppm the test.webp file decoded into the PPM format

3、其他 --> webp: cwebp [-preset <...>] [options] in_file [-o out_file]
4、webp --> 其他: dwebp in_file [options] [-o out_file]

  • 不指明格式默认转成PNG格式
  • webp文件名不能有空格

5、批量转的话那就是脚本的事了,例如Python3脚本批量将webp转png(转换成png后再转成其他格式就很简单了):

import os
import sys

decoder_path = r"path/to/dwebp.exe" # Windows10下其实也支持斜杠/路径
webp_path = r"path/to/webp" # webp文件所在目录,webp文件名不能有空格!
res_path = r"path/to/png_res" # 存储转换后图片的目录,假设是png

if not os.path.exists(res_path) :
  os.mkdir("result")

for f in os.listdir(webp_path):
  res_f = str(f).replace(".webp", ".png") # 若webp文件命名有特殊,这里需要改改映射规则
  cmd = "{0} {1} -o {2}".format(
    decoder_path, os.path.join(webp_path, f), os.path.join(res_path, res_f))
  os.system(cmd)

好了,这篇文章的内容到这就基本结束了,大家都学会了吗?希望对大家的学习和工作能有一定的帮助。

Python 相关文章推荐
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 Python
在django中使用自定义标签实现分页功能
Jul 04 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
Sep 02 Python
python pygame实现滚动横版射击游戏城市之战
Nov 25 Python
Python实现栈和队列的简单操作方法示例
Nov 29 Python
Python基础之高级变量类型实例详解
Jan 03 Python
tensorflow如何继续训练之前保存的模型实例
Jan 21 Python
Python 3.8 新功能来一波(大部分人都不知道)
Mar 11 Python
Django+RestFramework API接口及接口文档并返回json数据操作
Jul 12 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
Oct 27 Python
基于Python实现天天酷跑功能
Jan 06 Python
利用Python批量生成任意尺寸的图片
Aug 29 #Python
Python自定义类的数组排序实现代码
Aug 28 #Python
Python 基于Twisted框架的文件夹网络传输源码
Aug 28 #Python
Django URL传递参数的方法总结
Aug 28 #Python
python 网络编程常用代码段
Aug 28 #Python
Fabric 应用案例
Aug 28 #Python
Python两个内置函数 locals 和globals(学习笔记)
Aug 28 #Python
You might like
奇怪的PHP引用效率问题分析
2012/03/23 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
2013/06/17 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
js压缩利器
2007/02/20 Javascript
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
layui监听工具栏的实例(操作列表按钮)
2019/09/10 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
python输出带颜色字体实例方法
2019/09/01 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
电气自动化自荐信
2013/10/10 职场文书
物业管理个人自我评价
2013/11/08 职场文书
车贷收入证明范本
2014/01/09 职场文书
岗位廉洁从政承诺书
2014/03/27 职场文书
无偿献血倡议书
2014/04/14 职场文书
文秘专业应届生求职信
2014/05/26 职场文书
学校纪律作风整改措施思想汇报
2014/10/11 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
中小企业员工手册范本
2015/05/14 职场文书
SQL 聚合、分组和排序
2021/11/11 MySQL