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 pdb调试方法分享
Jan 21 Python
整理Python 常用string函数(收藏)
May 30 Python
Python模块文件结构代码详解
Feb 03 Python
python使用sqlite3时游标使用方法
Mar 13 Python
python中的文件打开与关闭操作命令介绍
Apr 26 Python
Python实现的个人所得税计算器示例
Jun 01 Python
python os.path模块常用方法实例详解
Sep 16 Python
python配置grpc环境
Jan 01 Python
python 列表转为字典的两个小方法(小结)
Jun 28 Python
Python3.0 实现决策树算法的流程
Aug 08 Python
Python中类似于jquery的pyquery库用法分析
Dec 02 Python
Python爬虫抓取论坛关键字过程解析
Oct 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
当海贼王变成JOJO风
2020/03/02 日漫
深入PHP异步执行的详解
2013/06/03 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
将string解析为json的几种方式小结
2010/11/11 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
浅析vue-router原理
2018/10/19 Javascript
JS实现简易计算器
2020/02/14 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
Python列表(list)常用操作方法小结
2015/02/02 Python
python获取本机mac地址和ip地址的方法
2015/04/29 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
2015/05/06 Python
Python脚本实现12306火车票查询系统
2016/09/30 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
Python常用特殊方法实例总结
2019/03/22 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
毕业生物理教师求职信
2013/10/17 职场文书
远程教育心得体会
2014/01/03 职场文书
单位刻章介绍信范文
2014/01/11 职场文书
十岁生日父母答谢词
2014/01/18 职场文书
2014年国培研修感言
2014/03/09 职场文书
开学典礼决心书
2014/03/11 职场文书
亮化工程实施方案
2014/03/17 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python