利用C#为数码照片添加拍照日期

利用C#为数码照片添加拍照日期

ID:38037646

大小:182.00 KB

页数:6页

时间:2019-05-24

利用C#为数码照片添加拍照日期_第1页
利用C#为数码照片添加拍照日期_第2页
利用C#为数码照片添加拍照日期_第3页
利用C#为数码照片添加拍照日期_第4页
利用C#为数码照片添加拍照日期_第5页
资源描述:

《利用C#为数码照片添加拍照日期》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、利用C#为数码照片添加拍照日期   继上一篇”利用C#实现任务栏通知窗口”后继续我们的C#实战演练。现在人们具备一台数码相机已经不是什么新鲜事了,更何况500万像素以上的数码相机更是逐渐成了主流。相比较以前以胶卷为感光介质的普通相机,数码相机可以将所照图像即刻转换成计算机可识别的图像文件格式以便浏览、共享和打印。虽然数码相机在技术和方便性上都远远高于普通相机,但是笔者发现所有已经生成的图像文件以及打印的数码照片上都没有拍照日期,若想在日后拍照时加上该选项也不是容易事,翻遍了数码相机的说明书竟然没有关于

2、怎样在照片上显示拍照日期的帮助。而且,随着数码图像文件的不断增加,面对成本成本的相册要想回顾一下其到底是在何时拍照的将会非常困难,尤其像笔者这样不辞辛苦的记录小儿生长历程的朋友更感觉如此。虽然在桌面电脑上利用我的电脑浏览所拍照的图像文件时,在窗口底部任务栏上或者图像文件属性窗口的摘要页都可以清楚地显示出拍照日期,但是要想将拍照日期绘制到图像上且能够打印到数码照片上却没有工具可以做到。其实,拍照日期已经保存在了图像文件里,我们需要自己动手编程获取拍照日期并在图像的右下角将其绘制出来,然后保存新生成的图像

3、文件并拷贝到数码照片打印店进行打印,我们就可以获得具备拍照日期的数码照片了,如下图:一、简介目前大部分数码相机都将所拍照的图像保存成JPG格式,而像拍照日期这样的信息统称为EXIF信息。EXIF是英文ExchangeableImageFile(可交换图像文件)的缩写,最初由日本电子工业发展协会(JEIDA--JapanElectronicIndustryDevelopmentAssociation)制订,当时JEITA决定为数

4、码相机厂商专门制定一套标准,随着数码相机的发展,其普及趋势越来越明显,于是JEITA对Exif标准进行了升级,目前最新版本为2.2。其实EXIF也是一种图像文件格式,EXIF信息就是由数码相机在拍摄过程中采集一系列的信息,然后把信息放置在JPG文件或者TIFF文件的头部,也就是说EXIF信息是镶嵌在图像文件格式内的一组拍摄参数,主要包括摄影时的光圈、快门、ISO、拍照日期时间等各种与当时摄影条件相关的信息、相机品牌型号、色彩编码,甚至还包括拍摄时录制的声音以及全球定位系统(GPS)等信息。简单的说,它

5、就好像是傻瓜相机的日期打印功能一样,只不过EXIF信息所记录的资讯更为详尽和完备。需要注意的是,用图像处理软件编辑过的数码图像文件有可能会丢失其EXIF信息。所以,要想在图像上绘制拍照日期首先必须读取EXIF信息,然后将读取出来的拍照日期绘制在图像表面,我们将以500万像素分辨率为2592x1944的JPG图像文件为对象,使用VisualStudio.Net2005的C#来编写一工具程序来实现上述功能。二、技术背景   EXI

6、F信息以键值对的方式保存在数码JPG图像文件的头部,在.Net平台中所有图像文件头部信息统称为元数据,我们可以使用GDI+读取现有的元数据,也可以将新的元数据写入图像文件中。GDI+将单独的元数据段存储在PropertyItem对象中,读取Image对象的PropertyItems属性以便从某个文件中检索所有的元数据。PropertyItems属性返回一个PropertyItem对象的数组。PropertyItem对象具有以下四个属性:Id、Value、Len和Type。Id用于标识元数据项的标记,下

7、表显示一些Id的值:十六进制值说明0x03200x010F0x01100x01320x829A0x5090....图像标题设备制造商设备型号拍照时间Exif曝光时间亮度表....Value为数组值,这些值的格式由Type属性确定。Len属性指向的值的数组长度(以字节表示)。Type属性指向数组中值的数据类型。下表显示由Type属性值指示的格式:数值说明1一个Byte2ASCII编码的Byte对象的数组316位整数432位整数5包含两个表示有理数的Byte对象的数组6未使用7未定义8未使用9SLong1

8、0SRational我们所感兴趣的ID值就是0x0132即图片拍照时间,对应的标记为PropertyTagDateTime,而在联机的MSDN中我们发现了更详细的关于EXIF属性的GDI+的描述,PropertyTagDateTime值的类型为PropertyTagTypeASCII,它以ASCII编码的形式保存数据,我们在获取数据后就按照ASCII进行解码,将一些列字节转换为日期/时间的字符串。在进行下一步之前,我们可以先用文本编辑软件如UltraEd

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。