iPhone相机raw模式拍摄下的dng图片格式转png,同时修复dng图片过暗的问题

  • 设备:iPhone 14 Pro Max
  • 拍摄的图片显示过暗
  • 原始图片格式:dng
  • 转换为:png
  • 原因:RAW文件有一个自动曝光参数,这个参数控制着整张图片的曝光度。
  • 代码:
import rawpy
import imageio
import os
import numpy as np

def convert_dng_to_png(dng_path, png_path):
    with rawpy.imread(dng_path) as raw:
        # 使用自定义的参数进行后处理
        rgb = raw.postprocess(
            no_auto_bright=False,  # 开启自动亮度
            user_wb=None,         # 使用摄像机的白平衡设置
            output_bps=16,        # 输出16位深度
            output_color=rawpy.ColorSpace.sRGB, # 使用 sRGB 色彩空间
            use_camera_wb=True,   # 使用摄像机的白平衡
            use_auto_wb=False,    # 不使用自动白平衡
            user_sat=None,        # 不应用饱和度调整
            gamma=(1, 1),         # 使用线性伽马
            half_size=False       # 保持原始分辨率
        )
        
        # 调整亮度
        rgb = np.clip(rgb, 0, 65535).astype(np.uint16)
        
        # 将16位的RGB值转换为8位
        rgb8 = (rgb / 256.0).astype('uint8')
        
        imageio.imsave(png_path, rgb8)

def batch_convert(folder_path):
    # 确保输出文件夹存在
    output_folder = os.path.join(folder_path, 'converted_pngs')
    os.makedirs(output_folder, exist_ok=True)

    # 获取文件夹内所有的 DNG 文件
    dng_files = [f for f in os.listdir(folder_path) if f.lower().endswith('.dng')]

    for dng_file in dng_files:
        dng_path = os.path.join(folder_path, dng_file)
        png_path = os.path.join(output_folder, os.path.splitext(dng_file)[0] + '.png')
        
        print(f"Converting {dng_file} to PNG...")
        convert_dng_to_png(dng_path, png_path)
        print(f"{dng_file} converted!")

    print("All DNG files have been converted to PNG!")

if __name__ == "__main__":
    folder_path = input("Enter the path of the folder containing DNG files: ")
    batch_convert(folder_path)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值