imageio库之CR3相机图片文件转PNG文件

发布时间 2023-06-16 18:50:24作者: Chimengmeng

imageio库之CR3相机图片文件转PNG文件

# -*-coding: Utf-8 -*-
# @File : main .py
# author: Chimengmeng
# blog_url : https://www.cnblogs.com/dream-ze/
# Time:2023/6/16
import os
import imageio
import rawpy
import time
import asyncio

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

BASE_CR3_DIR = os.path.join(BASE_DIR, 'imgs_CR3')

BASE_PNG_DIR = os.path.join(BASE_DIR, 'imgs_PNG')


async def gets_images_change(CR3_DIR, PNG_DIR):
    try:
        start_time = time.time()
        # 读取CR3格式文件
        with rawpy.imread(CR3_DIR) as raw:
            # 将图片转换为RGB颜色空间
            rgb = raw.postprocess()

        # 将rgb转换到srgb颜色空间,然后写入PNG文件
        imageio.imwrite(PNG_DIR, rgb, format='png', srgb=True)
        print(f'当前图片{CR3_DIR}转换成功!')
        print(f'当前总耗时为{time.time() - start_time}s')

    except Exception as e:
        print(e)


async def main():
    CR3_PATH_LIST = os.listdir(BASE_CR3_DIR)
    for path in CR3_PATH_LIST:
        cr3_path = os.path.join(BASE_CR3_DIR, path)
        png_path_ = os.path.splitext(os.path.basename(path))[0] + '.png'
        png_path = os.path.join(BASE_PNG_DIR, png_path_)
        await gets_images_change(cr3_path, png_path)


if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())