You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python将.cr3格式图片批量转换为.exr格式?

用Python批量转换CR3到EXR的实现方案

可用的开源工具组合

处理CR3(佳能RAW格式)到EXR的转换,核心依赖两个Python开源库:

  • rawpy:专门读取各类RAW图像格式(含CR3),可解码RAW数据为浮点型像素数组。
  • imageio:封装了EXR格式的写入逻辑,操作更简洁;也可使用官方的OpenEXR库。

前置准备

先安装所需依赖包,部分系统需先配置底层依赖:

  • Linux系统:先安装libraw开发库
    sudo apt-get install libraw-dev
    
  • 全平台:通过pip安装Python库
    pip install rawpy numpy imageio
    

单文件转换示例

以下代码读取单个CR3文件,经过RAW后处理(参数可按需调整),再保存为EXR:

import rawpy
import imageio

def cr3_to_exr(input_path, output_path):
    # 读取CR3文件,启用无损解压缩
    with rawpy.imread(input_path) as raw:
        # 后处理RAW数据,保留原始动态范围
        output = raw.postprocess(
            use_camera_wb=True,  # 使用相机内置白平衡
            no_auto_bright=True,  # 禁用自动提亮
            output_bps=16  # 输出16位浮点数据,适配EXR格式
        )
    # 写入EXR文件
    imageio.imwrite(output_path, output, format='EXR')

# 调用示例
cr3_to_exr("sample.cr3", "sample.exr")

批量处理脚本

针对大量CR3文件,可遍历指定目录自动转换:

import os
import rawpy
import imageio

def batch_cr3_to_exr(input_dir, output_dir):
    # 创建输出目录(不存在则自动生成)
    os.makedirs(output_dir, exist_ok=True)
    
    # 遍历目录下所有.cr3文件
    for filename in os.listdir(input_dir):
        if filename.lower().endswith('.cr3'):
            input_path = os.path.join(input_dir, filename)
            output_filename = os.path.splitext(filename)[0] + '.exr'
            output_path = os.path.join(output_dir, output_filename)
            
            # 执行转换
            with rawpy.imread(input_path) as raw:
                output = raw.postprocess(
                    use_camera_wb=True,
                    no_auto_bright=True,
                    output_bps=16
                )
            imageio.imwrite(output_path, output, format='EXR')
            print(f"完成转换:{filename} -> {output_filename}")

# 调用示例
batch_cr3_to_exr("./cr3_files", "./exr_output")

关键参数说明

  • use_camera_wb=True:使用相机内置白平衡参数,避免偏色;如需自定义,可改为user_wb=(r, g, b)。
  • no_auto_bright=True:保留RAW文件的原始动态范围,匹配EXR的高动态特性。
  • output_bps=16:输出16位浮点数据,是EXR的常用格式;也可选择32位浮点(output_bps=32),文件体积会相应增大。

注意事项

  • 较新的CR3格式需确保rawpy为最新版本:pip install --upgrade rawpy。
  • 转换过程占用内存较高,可根据机器配置分批次处理大数量文件。

内容的提问来源于stack exchange,提问作者Tech Biz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 15:00:01