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操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 Python
python实现微信远程控制电脑
Feb 22 Python
python使用openpyxl库修改excel表格数据方法
May 03 Python
Django框架使用内置方法实现登录功能详解
Jun 12 Python
kafka监控获取指定topic的消息总量示例
Dec 23 Python
Django关于admin的使用技巧和知识点
Feb 10 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
python代码能做成软件吗
Jul 24 Python
python实现控制台输出颜色
Mar 02 Python
Pytorch之扩充tensor的操作
Mar 04 Python
Python实现位图分割的效果
Nov 20 Python
Python万能模板案例之matplotlib绘制甘特图
Apr 13 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
isset和empty的区别
2007/01/15 PHP
php 什么是PEAR?
2009/03/19 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
PHP实现搜索相似图片
2015/09/22 PHP
JavaScript使用技巧精萃[代码非常实用]
2008/11/21 Javascript
Javascript中的isNaN函数使用说明
2011/11/10 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
2015/10/26 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
浅谈对yield的初步理解
2017/05/29 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
Python如何将模块打包并发布
2020/08/30 Python
在Pycharm中安装Pandas库方法(简单易懂)
2021/02/20 Python
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
美国现代家具和家居商店:Apt2B
2016/08/29 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
盛大二次面试题
2016/11/18 面试题
大学毕业感言50字
2014/02/07 职场文书
贷款委托书范本
2014/04/08 职场文书
物业管理专业自荐信
2014/07/01 职场文书
党员个人整改措施
2014/10/24 职场文书
2014年行政部工作总结
2014/11/19 职场文书
公务员政审材料
2014/12/23 职场文书
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python
SQL 聚合、分组和排序
2021/11/11 MySQL