扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:窦瑞欣 来源:天极软件 2007年11月11日
关键字:
//获取图像文件的所有元数据属性,以PropertyItem数组的格式保存 public static PropertyItem[] GetExifProperties(string fileName) { FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read); //通过指定的数据流来创建Image System.Drawing.Image image = System.Drawing.Image.FromStream(stream,true,false); return image.PropertyItems; } |
//遍历所有元数据,获取拍照日期/时间 private string GetTakePicDateTime(System.Drawing.Imaging.PropertyItem[] parr) { Encoding ascii = Encoding.ASCII ; //遍历图像文件元数据,检索所有属性 foreach (System.Drawing.Imaging.PropertyItem p in parr) { //如果是PropertyTagDateTime,则返回该属性所对应的值 if (p.Id==0x0132) { return ascii.GetString(p.Value); } } //若没有相关的EXIF信息则返回N/A return "N/A"; } |
…… …… for (int i = 0; i < listBox1.Items.Count; i++) { pi = GetExifProperties(listBox1.Items[i].ToString() ); //获取元数据中的拍照日期时间,以字符串形式保存 TakePicDateTime = GetTakePicDateTime(pi); //分析字符串分别保存拍照日期和时间的标准格式 SpaceLocation = TakePicDateTime.IndexOf(" "); dt = TakePicDateTime.Substring(0, SpaceLocation); dt=dt.Replace(":", "-"); tm = TakePicDateTime.Substring(SpaceLocation+1, TakePicDateTime.Length - SpaceLocation-2); TakePicDateTime = dt + " " + tm; //由列表中的文件创建内存位图对象 Pic = new Bitmap(listBox1.Items[i].ToString()); //由位图对象创建Graphics对象的实例 g = Graphics.FromImage(Pic); //在Graphics表面绘制数码照片的日期/时间戳 g.DrawString(TakePicDateTime, normalContentFont, new SolidBrush(normalContentColor), Pic.Width - 700, Pic.Height - 200); //将添加日期/时间戳后的图像进行保存 Pic.Save(textBox1.Text + Path.GetFileName(listBox1.Items[i].ToString())); //释放内存位图对象 Pic.Dispose(); } …… …… |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者