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 相关文章推荐
python计算牛顿迭代多项式实例分析
May 07 Python
python生成器,可迭代对象,迭代器区别和联系
Feb 04 Python
flask框架实现连接sqlite3数据库的方法分析
Jul 16 Python
详解python数据结构和算法
Apr 18 Python
django echarts饼图数据动态加载的实例
Aug 12 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
Django关于admin的使用技巧和知识点
Feb 10 Python
python numpy库linspace相同间隔采样的实现
Feb 25 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
Jun 03 Python
Python实现EM算法实例代码
Oct 04 Python
python实现简易名片管理系统
Apr 11 Python
PyTorch的Debug指南
May 07 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
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
php截取字符串函数分享
2015/02/02 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
JavaScript中自带的 reduce()方法使用示例详解
2016/08/10 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
2016/08/25 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
JavaScript实现点击切换功能
2021/01/27 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
python局域网ip扫描示例分享
2014/04/03 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
django+echart数据动态显示的例子
2019/08/12 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
python 下划线的不同用法
2020/10/24 Python
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
香港现代设计家具品牌:Ziinlife Furniture
2018/11/13 全球购物
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
家长给幼儿园的表扬信
2014/01/09 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
2014国庆节标语口号
2014/09/19 职场文书
交通安全横幅标语
2014/10/07 职场文书
小学运动会加油词
2015/07/18 职场文书
手残删除python之后的补救方法
2021/06/26 Python
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫