
SEO关键词: WebP转PNG、批量转换WebP、ffmpeg转换图片、PowerShell批处理、图片格式转换、Windows批量处理图片

前段时间接手一个项目素材包,解压后直接愣住: 几百张图片全是 WebP 格式。
问题来了:
于是只能走程序员老路:批量脚本自动化处理。
这篇文章直接给出最简单、最稳定的方案: 👉 PowerShell + FFmpeg 一行命令完成批量转换
很多人第一反应是找在线工具,但有几个致命问题:
问题 | 说明 |
|---|---|
图片数量多 | 上传耗时巨大 |
隐私问题 | 素材不能外传 |
效率低 | 需要手动操作 |
容易压缩失真 | 在线工具会二次压缩 |
而 FFmpeg 的优势:
官网下载: https://ffmpeg.org/download.html
选择 Windows 版本,下载解压。
例如解压到:
D:\ffmpeg把下面路径加入系统 PATH:
D:\ffmpeg\bin验证是否成功:
ffmpeg -version看到版本信息即安装成功。
进入存放 WebP 图片的文件夹,在地址栏输入:
powershell然后执行下面这一行:
Get-ChildItem *.webp | ForEach-Object { $out = $_.BaseName + '.png'; ffmpeg -i $_.Name $out }执行效果:
a.webp → a.png
b.webp → b.png
c.webp → c.png
...所有 WebP 将自动变成 PNG。
Get-ChildItem *.webp作用:
扫描当前目录下所有 .webp 文件。
ForEach-Object { ... }相当于 JS 的:
files.forEach(file => {})$out = $_.BaseName + '.png'例如:
logo.webp → logo.pngffmpeg -i $_.Name $out等价于手动执行:
ffmpeg -i logo.webp logo.png只是脚本帮你循环执行了几百次。
如果图片在多个文件夹中,可以用递归版本:
Get-ChildItem -Recurse -Filter *.webp | ForEach-Object {
$out = [System.IO.Path]::ChangeExtension($_.FullName, ".png")
ffmpeg -i $_.FullName $out
}适合处理:
/assets/img/
/assets/icons/
/assets/banner/一次性全部转换。
如果转换后不再需要 WebP:
Get-ChildItem *.webp | ForEach-Object {
$out = $_.BaseName + '.png'
ffmpeg -i $_.Name $out
Remove-Item $_.Name
}执行后:
只保留 PNG数量 | 耗时 |
|---|---|
100 张 | ≈ 5 秒 |
500 张 | ≈ 25 秒 |
1000 张 | ≈ 1 分钟 |
基本等于 SSD 读写速度瓶颈。
如果你遇到:
这套方案几乎是 最简单可靠的自动化流程:
FFmpeg + PowerShell = 一行命令解决以后再遇到上百张图片格式问题,直接脚本处理即可。