当前位置: 首页 > news >正文

为什么我对照片的排序总是与Windows系统的不一样呢?

我们在文件夹中有一批图片,在进行查看的时候,当排序方式是日期的时候,到底是按照怎么样的顺序排列的呢?

在 c# 里面,我们尝试把它认为是图片的创建时间(new FileInfo("F:\\1.png").CreationTime), 也尝试让它是图片的最后修改时间(new FileInfo("F:\\1.png").LastWriteTime), 也尝试使用 Shlwapi.DLL:

[System.Runtime.InteropServices.DllImport("Shlwapi.dll", CharSet = CharSet.Unicode)] private static extern int StrCmpLogicalW(string param1, string param2);

,但是都没有看到与系统一致的顺序。尤其对于图片的创建时间,当我们把图片拷贝到另外一台电脑的时候,它的创建时间又进行了更新。

不过,我们突然发现了图片包含了非常丰富的属性:

发现了没?这里的拍摄日期就是我们需要的排序时间, 按照 EXIF 标签 里面这个时间排序,得到的结果与系统排序的顺序是完全一致的:

// EXIF 标签:拍摄原图时间 / 数字化时间 / 修改时间 private static readonly int[] DateTakenIds = { 0x9003, 0x9004, 0x0132 }; public static DateTime? TryGetDateTaken(string path) { using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) using (var img = Image.FromStream(fs, useEmbeddedColorManagement: false, validateImageData: false)) { foreach (var id in DateTakenIds) { if (Array.IndexOf(img.PropertyIdList, id) < 0) continue; var prop = img.GetPropertyItem(id); // EXIF 字符串形如 "2026:06:26 13:52:00" var s = Encoding.ASCII.GetString(prop.Value).Trim('\0', ' ', '\r', '\n'); if (DateTime.TryParseExact(s, "yyyy:MM:dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out var dt)) return dt; } } return null; // 没有拍摄信息 }
http://www.jsqmd.com/news/1356794/

相关文章:

  • 2026年8月湖南省电信1000M单宽带办理避坑指南 - 找卡家园
  • 从AI Agent到智能家居:基于LLM的AI硬件开发实战指南
  • Cocos Creator游戏开发入门:从零到一构建跨平台2D游戏
  • TradingAgents:用多智能体 LLM 模拟投研团队的交易框架
  • SQL注入实战:从手工探测到自动化利用的靶场攻防演练
  • AI分析图高效提示词框架:从概念到实战的CRISP指南
  • 2026年8月湖南省怀化市移动宽带办理避坑全攻略 - 找卡家园
  • Excel COLUMN函数实战:动态报表与自动化技巧
  • Qwen3.8-Max深度评测:从基准测试到多智能体协作,Agent能力如何重塑AI应用
  • 涨停板封板质量打分系统实战:基于本地逐笔数据的Python实现
  • 应对AI API价格波动:构建供应商无关的抽象层架构实践
  • AI时代编程品味:从代码实现到优雅设计的进阶指南
  • 如何高效解密QMC文件:3种实战方法完全指南
  • 5G城市内涝积水监测预警物联网系统方案
  • LemoChat性能超越的详细分析
  • 2026国赛报名季:从组委会第一次通知到各校8月报名通知,赛程报名评奖官方口径一次讲清
  • 2026年8月湖南省怀化市移动单宽带怎么报装 - 找卡家园
  • 基于规则引擎构建游戏化经济模拟系统:从《我的世界》模组到通用架构设计
  • 局域网多DHCP服务器冲突:原理、实验与排查指南
  • JavaScript数据类型详解:从基础到高级实践
  • 2026年手机护眼钢化膜选购指南:从磁控溅射AR膜到圆偏振光技术,悟赫德观复盾的真实体验报告
  • Git版本控制系统入门与实战指南
  • 关于unity中layer和tag的具体区别和用法
  • AssetRipper:Unity资源提取与逆向工程的完整指南
  • 2026 年当下,平顶山专业的玻璃钢化粪池厂家有哪些,你家小区的隐秘角落,竟藏着能省一半运维成本的它?-舜晨玻璃钢 - 行业推荐官[官方】--
  • 鸿蒙星闪LVGL物联网开发全栈实战指南
  • 2026届必备的十大AI辅助写作平台实测分析
  • 3分钟掌握跨平台M3U8视频下载:告别在线观看限制的高效解决方案
  • 分布式优化与非合作博弈在能源共享中的应用
  • Unity游戏Mod开发入门:BepInEx框架安装、配置与错误排查全指南