美文网首页
Python 批量转化图片格式为png

Python 批量转化图片格式为png

作者: 饱饱抓住了灵感 | 来源:发表于2025-03-17 17:44 被阅读0次
  1. 安装依赖
pip install Pillow libwebp
  1. 实现代码
import os
from PIL import Image
from pathlib import Path

def convert_folder_to_png(input_folder, output_folder=None, add_suffix=True):
    """
    将输入文件夹内的所有图片转为 PNG 格式
    
    :param input_folder: 输入文件夹路径(字符串或 Path 对象)
    :param output_folder: 输出文件夹路径(可选,若未指定则默认在原文件夹创建)
    :param add_suffix: 是否为转换后的文件添加 "_png" 后缀(默认 True)
    """
    # 确保输入路径存在
    input_path = Path(input_folder)
    if not input_path.exists() or not input_path.is_dir():
        raise ValueError(f"输入路径不存在或不是文件夹: {input_folder}")
    
    # 创建输出文件夹(如果未指定则使用原文件夹)
    output_path = output_folder or (input_path/"to_png")
    if output_path != input_path:
        output_path.mkdir(exist_ok=True)
    
    # 支持的图片格式列表(可自行扩展)
    SUPPORTED_FORMATS = {'.webp', '.jpg', '.jpeg', '.gif', '.bmp', '.tiff'}
    
    # 遍历文件夹(递归)
    for root, _, files in os.walk(input_path):
        for filename in files:
            file_ext = Path(filename).suffix.lower()
            if file_ext in SUPPORTED_FORMATS:
                # 构建原文件路径和输出文件路径
                src_file = Path(root) / filename
                dst_dir = output_path
                
                # 确保输出目录存在
                dst_dir.mkdir(exist_ok=True)
                
                # 构建新文件名(添加后缀或不添加)
                if add_suffix:
                    dst_filename = f"{Path(filename).stem}_png{file_ext.replace(file_ext, '.png')}"
                else:
                    dst_filename = f"{Path(filename).stem}{file_ext.replace(file_ext, '.png')}"
                
                dst_file = dst_dir / dst_filename
                
                try:
                    with Image.open(src_file) as img:
                        # 保存为 PNG(无损质量)
                        img.save(dst_file, "PNG", quality=100, exif=img.info.get('exif', b''))
                        print(f"成功转换: {src_file} → {dst_file}")
                except Exception as e:
                    print(f"转换失败: {src_file} | 错误: {str(e)}")

# 使用示例
if __name__ == "__main__":
    # 将当前目录下的所有图片转为 PNG(保留原文件夹结构)
    convert_folder_to_png(".", add_suffix=False)
    
    # 或者自定义输入输出路径:
    # convert_folder_to_png("/path/to/input/folder", "/path/to/output/folder", add_suffix=False)
  1. 拖到cmd窗口运行

相关文章

  • cenvert与mogrify的简单使用

    convert部分 convert转化图片格式 下面是把png转化为jpg的shell命令 可以用以下脚本批量处理...

  • python处理svg数据

    我感觉python不能直接处理svg格式,所以想把它转化为png数据。 昨天搞了一天,把svg转化为png格式,网...

  • Flutter Widget(四) Image全解析

    博客地址:flutterall.com Flutter imgae支持的图片格式为:JPEG, PNG, GIF,...

  • 图片格式转换

    前言 项目开发过程中经常遇到图片格式转化的场景,比如blob与base64互转,svg转为png base64等,...

  • 多种图片格式批量转换JPG转PNG

    图片怎么批量转换格式,在日常工作上,由于工作等原因可能需要的是不同的图片格式,而且一张张的转换,显得繁琐浪费很多时...

  • 关于web切图

    1 使用Photoshop切图得到的三种图片格式:PNG24、PNG8、jpg, 2 修饰性的的一般切为 PNG2...

  • 自己开发WebP批量转化工具

    原文链接:自己开发WebP批量转化工具 由于WebP项目的启动,于是需要了解如何将png或jpg格式的图片转化为W...

  • Mac python3 批量转换png为webp

    方式一(推荐) 使用 1 放在project根目录2 执行脚本 方式二 PIL找不到 使用 1 创建img、img...

  • PNG、JPEG、BMP等几种图片格式详解

    PNG、JPEG、BMP等几种图片格式详解(一)—— PNGPNG、JPEG、BMP等几种图片格式详解(二)—— ...

  • uni-app H5给网站设置favicon.icon图标

    将图标图片存放在项目根目录,图片格式可以是png,图片名称随便起,这里为favicon.png。图标的大小,建议大...

网友评论

      本文标题:Python 批量转化图片格式为png

      本文链接:https://www.haomeiwen.com/subject/fksomjtx.html