本文目录导读:

Python脚本方式(最灵活)
使用PIL/Pillow
from PIL import Image
import os
import glob
def batch_convert(input_folder, output_folder, target_format='PNG'):
# 创建输出文件夹
os.makedirs(output_folder, exist_ok=True)
# 支持的输入格式
formats = ('*.jpg', '*.jpeg', '*.png', '*.bmp', '*.webp')
for fmt in formats:
for img_path in glob.glob(os.path.join(input_folder, fmt)):
# 打开图片
img = Image.open(img_path)
# 生成输出文件名
base_name = os.path.splitext(os.path.basename(img_path))[0]
output_path = os.path.join(output_folder, f"{base_name}.{target_format.lower()}")
# 转换并保存
img.save(output_path, target_format.upper())
print(f"已转换: {img_path} -> {output_path}")
# 使用示例
batch_convert('源文件夹路径', '输出文件夹路径', 'PNG')
使用OpenCV(适合图像处理)
import cv2
import os
import glob
def convert_with_opencv(input_folder, output_folder, target_ext='.png'):
os.makedirs(output_folder, exist_ok=True)
for img_path in glob.glob(os.path.join(input_folder, '*')):
# 读取图片
img = cv2.imread(img_path)
if img is None:
continue
# 生成输出文件名
base_name = os.path.splitext(os.path.basename(img_path))[0]
output_path = os.path.join(output_folder, base_name + target_ext)
# 保存图片
cv2.imwrite(output_path, img)
print(f"转换完成: {base_name}")
# 使用示例
convert_with_opencv('源文件夹', '输出文件夹', '.png')
命令行工具
ImageMagick(功能强大)
# 批量转换JPG到PNG
mogrify -path output_folder -format png *.jpg
# 批量调整大小并转换格式
mogrify -path output_folder -resize 800x600 -format webp *.jpg
# 批量转换所有图片到指定格式
for file in *.jpg; do convert "$file" "${file%.jpg}.png"; done
FFmpeg(适合视频帧转换)
# 批量转换图片序列
ffmpeg -i input_%04d.jpg output_%04d.png
# 批量转换指定格式
for f in *.jpg; do ffmpeg -i "$f" "${f%.jpg}.png"; done
专业软件工具
免费工具推荐:
- XnConvert:跨平台,支持众多格式
- IrfanView(Windows):批量转换 + 多种选项
- GIMP(通过脚本):可批量处理
- 格式工厂:简单易用
在线工具:
- Convertio:在线批量转换
- CloudConvert:支持多种格式
- Zamzar:简单快速的在线转换
高级批量处理脚本
import argparse
from pathlib import Path
from PIL import Image
import concurrent.futures
def convert_image(input_path, output_dir, target_format, quality=95):
"""单个图片转换"""
try:
img = Image.open(input_path)
# 如果是RGBA转RGB(如PNG转JPEG)
if target_format.upper() == 'JPEG' and img.mode in ('RGBA', 'P'):
img = img.convert('RGB')
# 生成输出路径
output_path = output_dir / f"{input_path.stem}.{target_format.lower()}"
# 保存图片
kwargs = {
'format': target_format.upper(),
'quality': quality
}
# 针对不同格式的特殊处理
if target_format.upper() == 'PNG':
kwargs['optimize'] = True
elif target_format.upper() == 'WEBP':
kwargs['lossless'] = False
img.save(output_path, **kwargs)
return f"✓ {input_path.name} -> {output_path.name}"
except Exception as e:
return f"✗ {input_path.name}: {str(e)}"
def batch_converter(input_folder, output_folder, target_format,
recursive=False, max_workers=4):
"""批量图片转换器"""
input_path = Path(input_folder)
output_path = Path(output_folder)
output_path.mkdir(parents=True, exist_ok=True)
# 支持的图片格式
extensions = {'.jpg', '.jpeg', '.png', '.bmp', '.gif', '.webp', '.tiff'}
# 获取所有图片文件
if recursive:
images = [f for f in input_path.rglob('*') if f.suffix.lower() in extensions]
else:
images = [f for f in input_path.glob('*') if f.suffix.lower() in extensions]
if not images:
print("没有找到图片文件")
return
print(f"找到 {len(images)} 张图片,开始转换...")
# 多线程并行处理
with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:
futures = [
executor.submit(convert_image, img, output_path, target_format)
for img in images
]
for future in concurrent.futures.as_completed(futures):
result = future.result()
print(result)
# 使用示例
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='图片格式批量转换工具')
parser.add_argument('input', help='输入文件夹路径')
parser.add_argument('output', help='输出文件夹路径')
parser.add_argument('format', help='目标格式 (png, jpg, webp, bmp等)')
parser.add_argument('-r', '--recursive', action='store_true', help='递归处理子文件夹')
parser.add_argument('-w', '--workers', type=int, default=4, help='并行工作线程数')
args = parser.parse_args()
batch_converter(
args.input,
args.output,
args.format,
recursive=args.recursive,
max_workers=args.workers
)
建议与注意事项
格式选择建议:
- PNG:保持透明背景,无损压缩
- JPEG:照片类,文件小但有损
- WebP:现代格式,压缩率高
- GIF:简单动画,256色限制
常见问题解决:
- RGBA转RGB:PNG转JPEG时需处理透明通道
- 色彩模式:CMYK转RGB可能失真
- 文件大小:可通过quality参数控制
性能优化:
- 使用多线程/多进程处理大文件
- SSD硬盘提升IO速度
- 内存足够时使用内存映射
选择哪种方法取决于你的具体需求:
- 简单转换:推荐使用在线工具或专业软件
- 批量自动化:Python脚本最灵活
- 命令行爱好者:ImageMagick功能强大
- 大量图片:考虑使用多线程版本
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播