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 文件和路径操作函数小结
Nov 23 Python
python中的多重继承实例讲解
Sep 28 Python
Python实现定时任务
Feb 08 Python
Python矩阵常见运算操作实例总结
Sep 29 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
python利用requests库进行接口测试的方法详解
Jul 06 Python
详解Python字符串切片
May 20 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
python实现代码统计程序
Sep 19 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
python梯度下降算法的实现
Feb 24 Python
Selenium 安装和简单使用的实现
Dec 04 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
用PHP实现多级树型菜单
2006/10/09 PHP
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
js getElementsByTagName的简写方式
2010/06/27 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
vue组件实践之可搜索下拉框功能
2018/11/25 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
python 类之间的参数传递方式
2019/12/20 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
ddl,dml和dcl的含义
2016/05/08 面试题
软件工程师面试题
2012/06/25 面试题
运动会领导邀请函
2014/02/05 职场文书
个人委托书如何写
2014/09/25 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
2015年党员个人剖析材料
2014/12/18 职场文书
2019关于实习生工作安排及待遇的管理方案!
2019/07/16 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript