【隨筆】把 NEF 檔轉成 JPG 檔

  • 429
  • 0
  • 2019-08-22

NEF 檔是 NIKON 相機內部的專用的影像格式,其中包含了很多資訊。
一般而言,在電腦上也可以直接瀏覽,但偶爾也會有轉檔的需求。

前陣子接到老婆大人的「委託」,請我幫忙轉檔。

說是相機內的原始檔案,不知道怎麼處理。
其實我也不知道,但有些「委託」不容拒絕。

還好,稍作搜尋,很容易就找到解決的辦法。
夏恩稍微改寫一下,放在此地,留作紀錄。

這次使用 rawpy 工具箱,請自行安裝:

程式如下:

# -*- coding: utf-8 -*-
"""
程式簡介:convert NEF to JPG
程式說明:找不到好用的工具時,就自己寫吧!

2019.08.13 Shayne
"""

import os
import rawpy
import imageio

imgs_dir = 'path/to/your_image'

count = 0
for dir_path, _, imgs_name in os.walk(imgs_dir):
    for name in imgs_name:

        ns = os.path.splitext(name)
        
        if ns[1] == '.NEF':
            img_path = os.path.join(dir_path, name)
            new_path = os.path.join(dir_path, 'new_'+ns[0]+'.jpg')
        
            # 程式核心計算功能
            raw = rawpy.imread(img_path)
            rgb = raw.postprocess(use_camera_wb=True, bright=1.2)
        
            imageio.imsave(new_path, rgb)
        
            count += 1
            print('process image: %d'%(count))

說明

先使用 rawpy.imread 讀取檔案之後,再用 postprocess 函數轉換。
在 rawpy 的說明文件中,postprocess() 本身有一大串的預設參數:

經過夏恩測試,若直接使用預設參數,影像經過轉換後會泛黃。
為避免泛黃的問題,可以調整 postprocess 的參數:

rgb = raw.postprocess(use_camera_wb=True, bright=1.2)

這邊使用 NEF 檔內自帶的白平衡訊息,再稍微調亮一下,感覺就跟原圖蠻像的!
至於程式其他的部分是調整檔名與路徑,使其可以批次處理,以及檔案輸出。

若要做更精細的處理的話,再請讀者自行修改程式與調整參數吧!

參考文獻

1. Using rawpy to convert multiple raw .NEF Images to TIFF
2. rawpy 0.13.1