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

如何无需转换格式从尼康NEF原始文件中提取拍摄日期?

提取尼康NEF文件拍摄日期(无需转换格式/第三方库)

方案1:PowerShell原生命令实现

直接用Windows自带的PowerShell调用Shell COM对象,无需额外安装工具:

# 替换为你的NEF文件路径
$nefFilePath = "C:\Photos\sample.nef"
$shell = New-Object -ComObject Shell.Application
$folderPath = Split-Path $nefFilePath -Parent
$fileName = Split-Path $nefFilePath -Leaf

$folder = $shell.Namespace($folderPath)
$fileItem = $folder.ParseName($fileName)

# 遍历属性找到「拍摄日期」
for ($i = 0; $i -lt 200; $i++) {
    $propertyName = $folder.GetDetailsOf($folder.Items, $i)
    if ($propertyName -eq "拍摄日期") {
        Write-Output "拍摄日期: $($folder.GetDetailsOf($fileItem, $i))"
        break
    }
}

该方法和Windows文件资源管理器悬停显示的元数据来自同一数据源,完全依赖Windows原生Shell支持,无需任何第三方库。

方案2:C#/.NET 编程实现

通过调用Windows Shell COM API,在.NET项目中直接读取NEF的拍摄日期:

using Shell32;
using System;
using System.IO;

class NefDateExtractor
{
    static void Main(string[] args)
    {
        string nefPath = @"C:\Photos\sample.nef";
        ExtractShootingDate(nefPath);
    }

    static void ExtractShootingDate(string filePath)
    {
        if (!File.Exists(filePath))
        {
            Console.WriteLine("文件不存在");
            return;
        }

        var shell = new Shell();
        var folder = shell.NameSpace(Path.GetDirectoryName(filePath));
        var fileItem = folder.ParseName(Path.GetFileName(filePath));

        // 遍历属性索引,匹配「拍摄日期」
        for (int i = 0; i < 200; i++)
        {
            string propName = folder.GetDetailsOf(null, i);
            if (propName.Equals("拍摄日期", StringComparison.OrdinalIgnoreCase))
            {
                string shootingDate = folder.GetDetailsOf(fileItem, i);
                Console.WriteLine($"拍摄日期: {shootingDate}");
                break;
            }
        }
    }
}

注意事项:

  • 项目需要添加COM引用:在Visual Studio中右键项目 → 添加 → 引用 → COM → 找到「Microsoft Shell Controls And Automation」并勾选
  • 该方法无需解析NEF的二进制结构,直接复用Windows内置的元数据读取能力

原理说明

Windows文件资源管理器能显示NEF的拍摄日期,是因为系统Shell内置了对尼康RAW格式元数据的解析逻辑。上述方案都是直接调用Windows Shell的API,获取系统已经解析好的元数据,完全符合「无需转换格式、无需第三方库」的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:05:08