首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >批量把 WebP 转成 PNG 的方法(PowerShell + FFmpeg)

批量把 WebP 转成 PNG 的方法(PowerShell + FFmpeg)

作者头像
代码简单说
发布2026-06-16 14:14:50
发布2026-06-16 14:14:50
920
举报
文章被收录于专栏:代码简单说代码简单说

批量把 WebP 转成 PNG 的方法(PowerShell + FFmpeg)

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


在这里插入图片描述
在这里插入图片描述

一次被 WebP 支配的经历

前段时间接手一个项目素材包,解压后直接愣住: 几百张图片全是 WebP 格式。

问题来了:

  • 设计工具不支持批量导出
  • 某些旧系统不兼容 WebP
  • 手动一张一张转换几乎不可能

于是只能走程序员老路:批量脚本自动化处理。

这篇文章直接给出最简单、最稳定的方案: 👉 PowerShell + FFmpeg 一行命令完成批量转换


一、为什么选择 FFmpeg

很多人第一反应是找在线工具,但有几个致命问题:

问题

说明

图片数量多

上传耗时巨大

隐私问题

素材不能外传

效率低

需要手动操作

容易压缩失真

在线工具会二次压缩

而 FFmpeg 的优势:

  • 支持 WebP、PNG、JPG 等几乎所有格式
  • 无损转换
  • 可脚本自动化
  • 本地执行速度极快

二、安装 FFmpeg(Windows)

1)下载 FFmpeg

官网下载: https://ffmpeg.org/download.html

选择 Windows 版本,下载解压。

例如解压到:

代码语言:javascript
复制
D:\ffmpeg
2)配置环境变量

把下面路径加入系统 PATH:

代码语言:javascript
复制
D:\ffmpeg\bin

验证是否成功:

代码语言:javascript
复制
ffmpeg -version

看到版本信息即安装成功。


三、核心批量转换命令

进入存放 WebP 图片的文件夹,在地址栏输入:

代码语言:javascript
复制
powershell

然后执行下面这一行:

代码语言:javascript
复制
Get-ChildItem *.webp | ForEach-Object { $out = $_.BaseName + '.png'; ffmpeg -i $_.Name $out }

执行效果:

代码语言:javascript
复制
a.webp → a.png
b.webp → b.png
c.webp → c.png
...

所有 WebP 将自动变成 PNG。


四、命令逐段解析(理解后可自由改造)

1)获取所有 WebP 文件
代码语言:javascript
复制
Get-ChildItem *.webp

作用: 扫描当前目录下所有 .webp 文件。


2)遍历每个文件
代码语言:javascript
复制
ForEach-Object { ... }

相当于 JS 的:

代码语言:javascript
复制
files.forEach(file => {})

3)生成输出文件名
代码语言:javascript
复制
$out = $_.BaseName + '.png'

例如:

代码语言:javascript
复制
logo.webp → logo.png

4)调用 FFmpeg 转换
代码语言:javascript
复制
ffmpeg -i $_.Name $out

等价于手动执行:

代码语言:javascript
复制
ffmpeg -i logo.webp logo.png

只是脚本帮你循环执行了几百次。


五、进阶:递归转换所有子目录

如果图片在多个文件夹中,可以用递归版本:

代码语言:javascript
复制
Get-ChildItem -Recurse -Filter *.webp | ForEach-Object { 
    $out = [System.IO.Path]::ChangeExtension($_.FullName, ".png")
    ffmpeg -i $_.FullName $out
}

适合处理:

代码语言:javascript
复制
/assets/img/
/assets/icons/
/assets/banner/

一次性全部转换。


六、进阶:删除原 WebP(可选)

如果转换后不再需要 WebP:

代码语言:javascript
复制
Get-ChildItem *.webp | ForEach-Object { 
    $out = $_.BaseName + '.png'
    ffmpeg -i $_.Name $out
    Remove-Item $_.Name
}

执行后:

代码语言:javascript
复制
只保留 PNG

七、处理速度实测

数量

耗时

100 张

≈ 5 秒

500 张

≈ 25 秒

1000 张

≈ 1 分钟

基本等于 SSD 读写速度瓶颈。


八、总结

如果你遇到:

  • 项目素材全是 WebP
  • 需要兼容旧系统
  • 需要批量转换

这套方案几乎是 最简单可靠的自动化流程

代码语言:javascript
复制
FFmpeg + PowerShell = 一行命令解决

以后再遇到上百张图片格式问题,直接脚本处理即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 批量把 WebP 转成 PNG 的方法(PowerShell + FFmpeg)
    • 一次被 WebP 支配的经历
  • 一、为什么选择 FFmpeg
  • 二、安装 FFmpeg(Windows)
    • 1)下载 FFmpeg
    • 2)配置环境变量
  • 三、核心批量转换命令
  • 四、命令逐段解析(理解后可自由改造)
    • 1)获取所有 WebP 文件
    • 2)遍历每个文件
    • 3)生成输出文件名
    • 4)调用 FFmpeg 转换
  • 五、进阶:递归转换所有子目录
  • 六、进阶:删除原 WebP(可选)
  • 七、处理速度实测
  • 八、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档