CR2转png python源码

import os

import sys

import rawpy

from PIL import Image

import tkinter as tk

from tkinter import filedialog

def convert_cr2_to_png(cr2_path, output_dir):

    with rawpy.imread(cr2_path) as raw:

        rgb = raw.postprocess()

    img = Image.fromarray(rgb)

    base = os.path.splitext(os.path.basename(cr2_path))[0]

    png_path = os.path.join(output_dir, base + ‘.png’)

    img.save(png_path)

    print(f”已保存: {png_path}”)

def main():

    # 弹出文件/文件夹选择窗口

    root = tk.Tk()

    root.withdraw()

    print(“请选择一个或多个CR2文件,或选择包含CR2文件的文件夹:”)

    paths = filedialog.askopenfilenames(title=”选择CR2文件”, filetypes=[(“CR2 files”, “*.cr2”)])

    cr2_files = list(paths)

    if not cr2_files:

        folder = filedialog.askdirectory(title=”选择包含CR2文件的文件夹”)

        if not folder:

            print(“未选择任何文件或文件夹,程序退出。”)

            return

        # 文件夹模式,批量添加

        for file in os.listdir(folder):

            if file.lower().endswith(‘.cr2’):

                cr2_files.append(os.path.join(folder, file))

    # 选择输出文件夹

    print(“请选择PNG输出文件夹:”)

    output_dir = filedialog.askdirectory(title=”选择PNG输出文件夹”)

    if not output_dir:

        print(“未选择输出文件夹,程序退出。”)

        return

    if not cr2_files:

        print(“未找到CR2文件。”)

        return

    for cr2_file in cr2_files:

        try:

            convert_cr2_to_png(cr2_file, output_dir)

        except Exception as e:

            print(f”转换失败: {cr2_file},原因: {e}”)

if __name__ == “__main__”:

    main()

Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注