背景
写了个小爬虫,爬了一堆图片回来,全都是webp格式的。
可我还在用着上古时代的AcdSee 3.2,一张张图片都拖到浏览器里去看也显得太傻了。
虽然我瘾大,可是人菜。
看了半天别的玩家写的各种奇奇怪怪的攻略,高人可以用powershell一句话搞定,我当然也知道powershell很好很强大,奈何我怎么改来改去在我的计算机上都跑不通。
最后只好还是求助我刚学会没几天的Python。
准备工作
这webp的始作俑者当然是Google,它家也提供一个软件包用来折腾webp的文件。
地址在此: https://developers.google.com/speed/webp
解压下来之后的文件里面跟FFMpeg很像,直接去bin文件夹看看就好。
看了一下随文件自带的说明,里面讲了几个参数,大致是这样的:
> dwebp -h
Usage: dwebp in_file [options] [-o out_file]
有了这个dwebp.exe文件,就可以开工了
实操
进入VS Code写代码
import os # 首先调用os模块
# 接着指定webp图片所在所有文件夹的目录
rootdir = r'D:\RMT\TRY\vmg'
# 通过os模块的os.walk()函数来遍历这个文件夹和其下所有的子文件夹里面的内容
for (folder,_,filenames) in os.walk(rootdir):
# 通过循环,来得到文件夹里面的路径
for n in filenames:
# 得到类似D:\RMT\TRY\vmg\鲜花和浪漫都给你\2021030910104769.webp这样的源文件完整地址
input_file = folder + "\\" + n
# 得到类似D:\RMT\TRY\vmg\鲜花和浪漫都给你\2021030910104769.png这样的目标文件的完整地址
output_file = input_file.split(".")[0] + '.png'
# 指定google的webp文件解码器的路径
bin_file = r'F:\Lab\libwebp-1.2.0-windows-x64\libwebp-1.2.0-windows-x64\\bin\dwebp'
# 通过python3的高版本引入的f格式来简化字符串的拼接,而且显得很直观。
# 这里的-mt是dwebp中的参数,意为调用多线程,如果你的图片不大,可以省略
command = f'{bin_file} "{input_file}" -mt -o "{output_file}"'
# 到了这一步,得到的命令将类似于:
# F:\Lab\libwebp-1.2.0-windows-x64\libwebp-1.2.0-windows-x64\bin\dwebp "D:\RMT\TRY\vmg\鲜花和浪漫都给你\2021030910104769.webp" "D:\RMT\TRY\vmg\鲜花和浪漫都给你\2021030910104769.png"
# 最后调用os模块来执行cmd命令
os.system(command)
哎,时代的车轮滚滚,像我这样用着拼音加加,抱着windows 7和AcdSee 3.2不肯撒手的人,可能注定该留在历史的垃圾堆里了吧……