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抓取网页正文的源码
Jun 11 Python
Python THREADING模块中的JOIN()方法深入理解
Feb 18 Python
利用Python开发微信支付的注意事项
Aug 19 Python
Python实现的个人所得税计算器示例
Jun 01 Python
django框架使用orm实现批量更新数据的方法
Jun 21 Python
pytorch 更改预训练模型网络结构的方法
Aug 19 Python
Python流程控制 if else实现解析
Sep 02 Python
Python使用matplotlib实现交换式图形显示功能示例
Sep 06 Python
python将邻接矩阵输出成图的实现
Nov 21 Python
python实现简单井字棋游戏
Mar 04 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
Jun 02 Python
 分享一个Python 遇到数据库超好用的模块
Apr 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
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
PHP简单遍历对象示例
2016/09/28 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
有效的捕获JavaScript焦点的方法小结
2009/10/08 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
React组件生命周期详解
2017/07/03 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
python调用shell的方法
2013/11/20 Python
Python简单连接MongoDB数据库的方法
2016/03/15 Python
Python获取当前路径实现代码
2017/05/08 Python
python实现杨辉三角思路
2017/07/14 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
python实现简单飞行棋
2020/02/06 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
Python类型转换的魔术方法详解
2020/12/23 Python
台湾最大网路书店:博客来
2018/03/18 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
优秀驾驶员先进事迹材料
2014/05/04 职场文书
社区志愿者培训方案
2014/06/10 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
2015年市场部工作总结
2015/04/30 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
幼儿园大班教师评语
2019/06/21 职场文书