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写的创建文件夹自定义函数mkdir()
Aug 25 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
Apr 25 Python
Python 字典与字符串的互转实例
Jan 13 Python
python基础之包的导入和__init__.py的介绍
Jan 08 Python
使用Python横向合并excel文件的实例
Dec 11 Python
Python Unittest根据不同测试环境跳过用例的方法
Dec 16 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
python使用OpenCV模块实现图像的融合示例代码
Apr 10 Python
Python的历史与优缺点整理
May 26 Python
使用SQLAlchemy操作数据库表过程解析
Jun 10 Python
Python通过队列来实现进程间通信的示例
Oct 14 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
基于mysql的bbs设计(四)
2006/10/09 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
可以支持多中格式的JS键盘
2007/05/02 Javascript
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
表单验证插件Validation应用的实例讲解
2015/10/10 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
深入理解Vue 单向数据流的原理
2017/11/09 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
Python给你的头像加上圣诞帽
2018/01/04 Python
python 判断linux进程,并杀死进程的实现方法
2019/07/01 Python
python自动发微信监控报警
2019/09/06 Python
会计实习生自我鉴定
2013/12/12 职场文书
优秀党员主要事迹
2014/01/19 职场文书
网上卖盒饭创业计划书
2014/01/26 职场文书
会计核算科岗位职责
2014/03/19 职场文书
喜之郎果冻广告词
2014/03/20 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
导游词之桂林山水
2019/09/20 职场文书
基于python实现银行管理系统
2021/04/20 Python
Spring Bean的实例化之属性注入源码剖析过程
2021/06/13 Java/Android
利用 JavaScript 构建命令行应用
2021/11/17 Javascript