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之用Python计算
Sep 12 Python
Python的面向对象思想分析
Jan 14 Python
用Python的Django框架编写从Google Adsense中获得报表的应用
Apr 17 Python
使用Python如何测试InnoDB与MyISAM的读写性能
Sep 18 Python
pytorch 彩色图像转灰度图像实例
Jan 13 Python
关于tf.reverse_sequence()简述
Jan 20 Python
关于Tensorflow 模型持久化详解
Feb 12 Python
Python常见反爬虫机制解决方案
Jun 01 Python
Python xlwt模块使用代码实例
Jun 10 Python
Python实现http接口自动化测试的示例代码
Oct 09 Python
Python3.9新特性详解
Oct 10 Python
Pandas数据结构之Series的使用
Mar 31 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下载CSS文件中的图片的代码
2013/09/24 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
javascript 常用关键字列表集合
2007/12/04 Javascript
javascript  Error 对象 错误处理
2008/05/18 Javascript
Prototype Array对象 学习
2009/07/19 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python制作豆瓣图片的爬虫
2017/12/28 Python
django表单实现下拉框的示例讲解
2018/05/29 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
新郎新娘婚礼答谢词
2014/01/11 职场文书
家长给小学生的评语
2014/01/30 职场文书
安全标准化汇报材料
2014/02/03 职场文书
全神贯注教学反思
2014/02/03 职场文书
护理中职生求职信范文
2014/02/24 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
情况说明书格式范文
2014/05/06 职场文书
最美护士演讲稿
2014/08/27 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
贷款收入证明格式
2015/06/24 职场文书
团拜会主持词
2015/07/04 职场文书
教师节表彰会主持词
2015/07/06 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL