需要下载

MetadataExtractor 和 System.Drawing.Imaging 两个 NuGet 包

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using MetadataExtractor;
using MetadataExtractor.Formats.Exif;
using System.Drawing;
using System.Drawing.Imaging;
using System.Globalization;namespace PhototDemo
{class Program{static string path = @"J:\phtoto";static string totalPhotoPath = @"J:\Total_Photo";static string txtPath = @"J:\Total_Photo\record.txt";static void Main(string[] args){string[] files = System.IO.Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);string dir = "";string timePath = "";string name = "";string time = "";string timeDir = "";//foreach (string file in files)int Length = files.Length;for (int i = 0; i < Length; i++){string file = files[i];if (file.Contains(".NEF")){time = GetNEFTime(file);timePath = time + "\\NEF";}if(file.Contains(".JPG")){time = GetJPGETime(file);timePath = time + "\\JPG";}dir = totalPhotoPath + "\\" + timePath;timeDir = totalPhotoPath + "\\" + time;if (!System.IO.Directory.Exists(timeDir)){System.IO.Directory.CreateDirectory(timeDir);}if (!System.IO.Directory.Exists(dir)) {System.IO.Directory.CreateDirectory(dir);}name = Path.GetFileName(file);File.Copy(file, dir + "\\" + name, true);Console.WriteLine(file);File.AppendAllText(txtPath, file + "\n");}}private static string GetNEFTime(string file){IEnumerable<MetadataExtractor.Directory> metaDirectories = ImageMetadataReader.ReadMetadata(file);var ifd0Directory = metaDirectories.OfType<ExifIfd0Directory>().SingleOrDefault();string time = ifd0Directory.GetString(ExifDirectoryBase.TagDateTime);string[] temps = time.Split(':');temps[2] = temps[2].Substring(0, 2);return (temps[0] + "_" + temps[1] + "_" + temps[2]);}private static string GetJPGETime(string file){Image theImage = Image.FromFile(file);PropertyItem[] propItems = theImage.PropertyItems;PropertyItem propItem = theImage.GetPropertyItem(0x9003);Byte[] propItemValue = propItem.Value;string dateTimeStr = System.Text.Encoding.ASCII.GetString(propItemValue).Trim('\0');DateTime dt = DateTime.ParseExact(dateTimeStr, "yyyy:MM:dd HH:mm:ss", CultureInfo.InvariantCulture);string newDTstr = dt.ToString("yyyy_MM_dd");theImage.Dispose();return newDTstr;}}
}

使用C#读取 NEF类型和JPG类型照片的拍摄时间相关推荐

  1. 数据库中的字段varchar类型和char类型的区别?

    数据库中的字段varchar类型和char类型的区别? 目录 数据库中的字段varchar类型和char类型的区别?

  2. DATETIME类型和BIGINT 类型互相转换

    项目中使用BIGINT来存放时间,以下代码用来转换时间类型和BIGINT类型 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ========= ...

  3. (Redis_学习一)Redis关于string类型和hash类型数据操作

    Redis关于string类型和hash类型数据操作 set name xiaohongyang // get name setnx name xiaohy get name setex name 1 ...

  4. Java学习(4)—— 布尔类型、基本数据类型转换、基本数据类型和String类型的转换

    布尔类型 也叫Boolean类型,boolean只允许取true和false. boolean占一个字节. 适用于逻辑运算,流程控制语句. 有默认类型,是false.但是应该声明为成员变量或是静态变量 ...

  5. *floa类型和long类型那个取值范围更大?

    *floa类型和long类型那个取值范围更大? 作为基础知识.我们都知道float在内存中占用4个字节的空间,而long型占用8个字节的空间. 但float的取值范围是-3.403E38-3.403E ...

  6. 06-void类型和never类型

    void类型和never类型都是ts新增的类型,这两者的共同点是都常见用于声明函数的返回值的类型,这里我们把它们两放在一起介绍有助于大家区分. void,表示函数返回值空,即undefined. ne ...

  7. 数据库查询字段类型为double类型和float类型时遇到的坑

    对于小数型的字段,我们常用double类型和float类型,但是这两种类型使用的时候有很大差别,下面我们来看一下 在设计数据表时,突然发现原来FLOAT原来是很不靠谱的,所以在这里建议大家换成DOUB ...

  8. Python中float类型、float32类型和float64类型的表示精度,所需内存及其之间的转换

    1. 表示精度和所需内存 float类型和float64类型是一样的,都需要64个bits,而float32需要32个bits. 精度方面,float类型和float64类型在十进制中可以有16位,而 ...

  9. (一) 常见异常的捕获 // // (1) 编写一个程序,分别生成ArrayIndexOutOfBoundsException类型和ArithmeticException类型的异常。

    这道题不交,wdnmd public class Test6_1_zxj {// (一) 常见异常的捕获 // // (1) 编写一个程序,分别生成ArrayIndexOutOfBoundsExcep ...

最新文章

  1. python的类方法_python 如何调用类的方法
  2. php人民币转换,PHP字符串转换RMB形式数字
  3. 【Binary Tree Maximum Path Sum】cpp
  4. PLSQL乱码TNS-12557: protocol adapter not loadable解决
  5. 小米高管否认鸿蒙,小米参加华为鸿蒙系统实验?小米高管终于回应,网友评论炸了!...
  6. 查询DB中每个表占用的空间大小
  7. 二叉树层序遍历递归与非递归_二叉树的遍历「递归、非递归」以及自己的感受
  8. python实战===用python识别图片中的中文
  9. uniapp中利用监视vuex中state数据配合uview实现登录消息提示
  10. 常用的html语言,常用的HTML语言标记
  11. python解题工程力学_工程力学学习指导与解题指南(普通高等教育十三五规划教材)...
  12. chrome 无法下载文件软件问题
  13. Tomcat服务器端口修改,tomcat服务器配置端口 tomcat端口号修改操作步骤
  14. 深度学习:YOLO算法与其优化
  15. java4android网易云_仿照网易云音乐界面 android特效
  16. 自动html5视频播放插件,视频自动转HTML5播放器插件
  17. Visual C++ 2010 第4章 数组、字符串和指针
  18. windows 2003 系统中安装 火狐浏览器
  19. 第二证券|热门板块再次爆发,早盘主力抢筹超10亿元!
  20. 浏览器input自动填充

热门文章

  1. ZYNQ7020双核AMP(linux+裸机)方案
  2. 超5k+stars,给大家推荐两个ChatGPT自动化论文阅读网站和插件,从此搞科研再也不用愁!...
  3. 错过这篇文章,可能你这辈子不懂什么叫傅里叶变换了(一)
  4. 【智慧园区】利用BIM运营中国第一高楼,精细化管理更“现代”
  5. 好用的在线客服系统有哪些
  6. 简版 Swift 5.7 新特性一览
  7. PageOffice动态生成Word文件并转换为PDF
  8. 读《厚黑学》By 李宗吾
  9. cmu14-445 环境搭建
  10. Js 如何获取三位数里 百位 十位 个位