首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

利用 VC# 2005 為數位照片新增拍照日期 (1) - EXIF 背景知識與技術原理

     編輯:關於C語言

問題背景

數位相機普及,但產生的照片檔案與列印照片**缺乏拍照日期**。相機選單無相關設定,電腦瀏覽雖可見日期(工作列、屬性視窗),但無工具將日期**繪製到影像上**供列印。

解決方案:自行撰寫程式讀取 EXIF 日期,繪製至影像右下角,存新檔列印。

處理前 處理後

EXIF 簡介

  • EXIF = Exchangeable Image File(可交換影像檔案格式)
  • 由日本電子工業發展協會 (JEIDA/JEITA) 制訂,最新版 2.2
  • 嵌入 JPEG/TIFF 檔頭的拍攝參數群:光圈、快門、ISO、**拍照日期時間**、相機型號、色彩編碼、GPS、錄音等
  • 類似傳統相機日期列印,但資訊更完整
  • 注意:影像編輯軟體處理後可能遺失 EXIF

.NET 平台存取 EXIF

  • 檔頭資訊統稱中繼資料
  • GDI+ 讀取/寫入中繼資料
  • PropertyItem 封裝單一中繼資料項:Id、Value、Len、Type
  • Image.PropertyItems 回傳 PropertyItem[]

常見 ID 對照表

十六進制說明
0x0132拍照時間 (PropertyTagDateTime)
0x010F設備製造商
0x0110設備型號
0x829A曝光時間
0x5090亮度表

Type 編碼對照

數值說明
1Byte
2ASCII 編碼 Byte 陣列
316-bit 整數
432-bit 整數
5兩個 Byte 表有理數

0x0132 為 ASCII 編碼 (Type=2),需用 Encoding.ASCII.GetString 解碼。

實際檔頭觀察

UltraEdit 檢視檔頭

日期格式為 2006:06:07 16:33:41,非標準格式,需格式化後繪製。

下一步

建立 Graphics 物件從指定影像檔案,於其上繪製格式化後的拍照日期時間。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved