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写的一个wordpress的采集程序
Feb 27 Python
Python实现求笛卡尔乘积的方法
Sep 16 Python
python实现飞机大战
Sep 11 Python
python游戏地图最短路径求解
Jan 16 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
pandas读取CSV文件时查看修改各列的数据类型格式
Jul 07 Python
Python中生成一个指定长度的随机字符串实现示例
Nov 06 Python
python二分法查找算法实现方法【递归与非递归】
Dec 06 Python
selenium WebDriverWait类等待机制的实现
Mar 18 Python
cookies应对python反爬虫知识点详解
Nov 25 Python
Python爬取梨视频的示例
Jan 29 Python
python编写函数注意事项总结
Mar 29 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调用数据库的存贮过程
2006/10/09 PHP
php db类库进行数据库操作
2009/03/19 PHP
php网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
php计算年龄精准到年月日
2015/11/17 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
简单介绍Python中的RSS处理
2015/04/13 Python
wxPython实现窗口用图片做背景
2018/04/25 Python
Python 读写文件的操作代码
2018/09/20 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
美国专注于健康商品的网站:eVitamins
2017/01/23 全球购物
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
Herschel美国官网:背包、手提袋及配件
2020/03/10 全球购物
2013年高中生自我评价
2013/10/23 职场文书
班主任评语大全
2014/04/26 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
公司委托书范本5篇
2014/09/20 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书