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实现360皮肤按钮控件示例
Feb 21 Python
实例解析Python的Twisted框架中Deferred对象的用法
May 25 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
Jun 29 Python
python将unicode转为str的方法
Jun 21 Python
使用python存储网页上的图片实例
May 22 Python
python3实现随机数
Jun 25 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
Aug 15 Python
python 多进程并行编程 ProcessPoolExecutor的实现
Oct 11 Python
python django中8000端口被占用的解决
Dec 17 Python
Python基础之高级变量类型实例详解
Jan 03 Python
PyQt5-QDateEdit的简单使用操作
Jul 12 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传输数据的代码
2007/11/13 PHP
php 防止单引号,双引号在接受页面转义
2008/07/10 PHP
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
JavaScript之appendChild、insertBefore和insertAfter使用说明
2010/12/30 Javascript
javascript 函数及作用域总结介绍
2013/11/12 Javascript
javascript实现微信分享
2014/12/23 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
python获取本机mac地址和ip地址的方法
2015/04/29 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
解决python对齐错误的方法
2020/07/16 Python
CSS3标注引用的出处和来源的方法
2020/02/25 HTML / CSS
心理学专业毕业生推荐信范文
2013/11/21 职场文书
酒店前台接待岗位职责
2013/12/03 职场文书
我为自己代言广告词
2014/03/18 职场文书
学生会主席演讲稿
2014/04/25 职场文书
运动会演讲稿
2014/05/07 职场文书
市场营销计划书范文
2015/01/16 职场文书
中学生勤俭节约倡议书
2015/04/29 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript
Golang数据类型和相互转换
2022/04/12 Golang