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中的With语句
Feb 02 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
Python3 中文文件读写方法
Jan 23 Python
Python使用progressbar模块实现的显示进度条功能
May 31 Python
对python中字典keys,values,items的使用详解
Feb 03 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
Aug 07 Python
python tkinter图形界面代码统计工具(更新)
Sep 18 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
Nov 05 Python
python框架Django实战商城项目之工程搭建过程图文详解
Mar 09 Python
Python简单实现词云图代码及步骤解析
Jun 04 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
Jun 01 Python
Python自动化工具之实现Excel转Markdown表格
Apr 08 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
DOMXML函数笔记
2006/10/09 PHP
如何删除多级目录
2006/10/09 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
2006/12/06 PHP
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
2006/12/31 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
2014/11/19 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
python编写的最短路径算法
2015/03/25 Python
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
Python中工作日类库Busines Holiday的介绍与使用
2017/07/06 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
2019/08/01 Python
Python银行系统实战源码
2019/10/25 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
大学生个人事迹材料
2014/01/21 职场文书
设计专业毕业生求职信
2014/06/25 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
党员评议自我评价
2015/03/03 职场文书
员工离职证明范本
2015/06/12 职场文书
邹越演讲观后感
2015/06/15 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python