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解析json实例方法
Nov 19 Python
python网络编程学习笔记(三):socket网络服务器
Jun 09 Python
Flask入门教程实例:搭建一个静态博客
Mar 27 Python
Python实时获取cmd的输出
Dec 13 Python
python 简单的多线程链接实现代码
Aug 28 Python
深入flask之异步非堵塞实现代码示例
Jul 31 Python
Python常用爬虫代码总结方便查询
Feb 25 Python
使用Python做垃圾分类的原理及实例代码附源码
Jul 02 Python
基于python 微信小程序之获取已存在模板消息列表
Aug 05 Python
Python-jenkins 获取job构建信息方式
May 12 Python
python属于跨平台语言码
Jun 09 Python
python和php哪个容易学
Jun 19 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
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
Exjs 入门篇
2010/04/07 Javascript
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
2013/10/24 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
PHP+jquery+ajax实现分页
2016/12/09 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
2021/01/13 Vue.js
python 排列组合之itertools
2013/03/20 Python
python利用装饰器进行运算的实例分析
2015/08/04 Python
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
Python变量类型知识点总结
2019/02/18 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
机械专业应届生求职信
2013/09/21 职场文书
学生自我评价范文
2014/02/02 职场文书
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
护士节慰问信
2015/02/15 职场文书
Nginx快速入门教程
2021/03/31 Servers
深入理解redis中multi与pipeline
2021/06/02 Redis
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers