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+Turtle动态绘制一棵树实例分享
Jan 16 Python
Python爬虫实战:分析《战狼2》豆瓣影评
Mar 26 Python
Python 25行代码实现的RSA算法详解
Apr 10 Python
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
Jul 18 Python
对python的输出和输出格式详解
Dec 08 Python
django使用haystack调用Elasticsearch实现索引搜索
Jul 24 Python
使用pyinstaller逆向.pyc文件
Dec 20 Python
TensorFlow MNIST手写数据集的实现方法
Feb 05 Python
python excel多行合并的方法
Dec 09 Python
SpringBoot首页设置解析(推荐)
Feb 11 Python
python生成可执行exe控制Microsip自动填写号码并拨打功能
Jun 21 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中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
2020/05/15 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
js选择器全面解析
2016/06/27 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
JS实现iframe自适应高度的方法示例
2017/01/07 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
自我评价范文
2013/12/22 职场文书
行政助理的岗位职责
2014/02/18 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
群众路线四风自我剖析材料
2014/10/08 职场文书
坎儿井导游词
2015/02/09 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
公司聚餐通知
2015/04/22 职场文书
微信早安问候语
2015/11/10 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书