本文目录导读:

使用Python(跨平台、灵活)
需要安装 Pillow 库:
pip install Pillow
脚本 convert_to_png.py:
import os
from pathlib import Path
from PIL import Image
def batch_convert_to_png(input_dir, output_dir=None):
"""
批量转换图片为PNG格式
:param input_dir: 输入文件夹路径
:param output_dir: 输出文件夹路径(默认与输入相同)
"""
# 如果没指定输出目录,则使用输入目录
if output_dir is None:
output_dir = input_dir
# 确保输出目录存在
Path(output_dir).mkdir(parents=True, exist_ok=True)
# 支持的图片格式
supported_formats = ('.jpg', '.jpeg', '.png', '.bmp', '.gif', '.tiff', '.webp')
converted_count = 0
for filename in os.listdir(input_dir):
# 检查文件扩展名
if filename.lower().endswith(supported_formats):
input_path = os.path.join(input_dir, filename)
# 生成输出文件名(替换扩展名为.png)
output_filename = Path(filename).stem + '.png'
output_path = os.path.join(output_dir, output_filename)
try:
# 打开并转换图片
with Image.open(input_path) as img:
# 如果是RGBA模式(如PNG本身),保留之;否则转换为RGB
if img.mode == 'RGBA':
img.save(output_path, 'PNG')
else:
img.convert('RGBA').save(output_path, 'PNG')
converted_count += 1
print(f"✓ {filename} -> {output_filename}")
except Exception as e:
print(f"✗ 转换 {filename} 失败:{e}")
print(f"\n完成!共转换 {converted_count} 张图片。")
# 使用示例
if __name__ == "__main__":
# 替换为您的图片文件夹路径
input_folder = "./images" # 输入文件夹
output_folder = "./output_png" # 输出文件夹(可选)
batch_convert_to_png(input_folder, output_folder)
使用方法:
- 将脚本保存为
convert_to_png.py - 修改
input_folder和output_folder路径 - 运行:
python convert_to_png.py
使用ImageMagick(命令行,强大)
安装 ImageMagick:
- Windows: 下载安装包 https://imagemagick.org/script/download.php
- macOS:
brew install imagemagick - Linux:
sudo apt install imagemagick
批量转换命令(Windows):
@echo off
mkdir output_png 2>nul
for %%f in (*.jpg *.jpeg *.bmp *.gif *.tiff *.webp) do (
magick convert "%%f" "output_png\%%~nf.png"
echo 转换完成: %%f
)
pause
批量转换命令(Linux/macOS - Shell):
#!/bin/bash
mkdir -p output_png
for f in *.jpg *.jpeg *.bmp *.gif *.tiff *.webp; do
[ -f "$f" ] && magick convert "$f" "output_png/${f%.*}.png" && echo "转换完成: $f"
done
echo "全部转换完成!"
或使用更简洁的一行命令:
# Linux/macOS
mogrify -path output_png -format png *.jpg *.jpeg *.bmp
# Windows PowerShell
Get-ChildItem *.jpg,*.jpeg,*.bmp | ForEach-Object { magick convert $_.Name "output_png\$($_.BaseName).png" }
使用FFmpeg(视频帧转PNG)
如果您需要从视频中提取帧并转换为PNG:
# 提取所有帧 ffmpeg -i input.mp4 frames_%04d.png # 每秒提取1帧 ffmpeg -i input.mp4 -vf fps=1 frame_%04d.png
跨平台专用脚本(推荐,带进度条)
使用Python + tqdm(显示进度条):
pip install Pillow tqdm
import os
from pathlib import Path
from PIL import Image
from tqdm import tqdm
def batch_to_png(input_dir, output_dir=None):
output_dir = output_dir or input_dir
Path(output_dir).mkdir(parents=True, exist_ok=True)
files = [f for f in os.listdir(input_dir)
if f.lower().endswith(('.jpg', '.jpeg', '.png', '.bmp', '.gif', '.tiff', '.webp'))]
for file in tqdm(files, desc="转换进度"):
src = os.path.join(input_dir, file)
dst = os.path.join(output_dir, Path(file).stem + '.png')
try:
img = Image.open(src)
img.save(dst, 'PNG' if img.mode == 'RGBA' else img.convert('RGBA').save(dst, 'PNG'))
except Exception as e:
tqdm.write(f"错误: {file} - {e}")
# 使用
batch_to_png("./图片文件夹", "./输出文件夹")
注意事项:
- 保留透明度: 上述脚本会保留PNG自身的透明度,其他格式也会转换为RGBA模式。
- 覆盖风险: 如果原文件就是PNG,脚本会重新保存(通常无损)。
- 大文件处理: 对于超大图片(如几GB的TIFF),建议分批处理。
- 路径问题: 确保路径中没有特殊字符,Windows下注意反斜杠。
选择方法时,Python脚本最适合需要自定义逻辑的场景,ImageMagick适合纯命令行批量操作。