在线帮助 ICP备案 合作机构 我要订制
 
 7×24客服热线:13663712063
您的位置:首页  技术支持 C#获取图像Exif信息
       越辰家政管理软件
       越辰空调售后管理软件
       越辰图书销售管理软件
       越辰物业管理软件
       越辰茶楼管理软件
       越辰幼儿园管理软件
       越辰餐饮管理软件
       越辰病历管理系统
       越辰洗浴管理软件
       越辰住院管理系统
       越辰超市管理系统
  

C#获取图像Exif信息

来源:yocin  时间:2012-3-22 9:05:02  栏目:技术支持  点击率:2166
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;

namespace Console_Application
{
    class Program
    {
        public static void Main(string[] args)
        {
            Dictionary<string,string> exif = new Dictionary<string,string>();
            Image image = Image.FromFile(@"e:\www\test.jpg");
            PropertyItem[] properties = image.PropertyItems;
            foreach(PropertyItem property in properties)
            {
                switch(property.Id)
                {
                    //Exif
                    case 0x010E:
                    exif["ImageTitle"] = ASCIIToString(property.Value);
                        break;
                    case 0x010F:
                        exif["Make"] = ASCIIToString(property.Value);
                        break;
                    case 0x0110:
                        exif["Model"] = ASCIIToString(property.Value);
                        break;
                    case 0x0112:
                        exif["Orientation"] = ShortToString(property.Value,0);
                        break;
                    case 0x011A:
                        exif["XResolution"] = RationalToSingle(property.Value,0);
                        break;
                    case 0x011B:
                        exif["YResolution"] = RationalToSingle(property.Value,0);
                        break;
                    case 0x0128:
                        exif["ResolutionUnit"] = ShortToString(property.Value,0);
                        break;
                    case 0x0131:
                        exif["Software"] = ASCIIToString(property.Value);
                        break;
                    case 0x0132:
                        exif["DateTime"] = ASCIIToString(property.Value);
                        break;
                    //GPS
                    case 0x0002:
                        exif["GPSLatitude"] = string.Format("{0}°{1}′{2}″",
                                                            RationalToSingle(property.Value,0),
                                                            RationalToSingle(property.Value,8),
                                                            RationalToSingle(property.Value,16)
                                                           );
                        break;
                    case 0x0004:
                        exif["GPSLongitude"] = string.Format("{0}°{1}′{2}″",
                                                            RationalToSingle(property.Value,0),
                                                            RationalToSingle(property.Value,8),
                                                            RationalToSingle(property.Value,16)
                                                           );
                        break;
                    case 0x0006:
                        exif["GPSAltitude"] = RationalToSingle(property.Value,0);
                        break;
                }
            }
            foreach(KeyValuePair<string, string> kvp in exif)
                Console.WriteLine(kvp.Key + ": " + kvp.Value);

            Console.ReadKey(true);
        }
        
        //Method
        static string ByteToString(byte[] b,int startindex)
        {
            if(startindex+1<=b.Length)
                return ((char)b[startindex]).ToString();
            else
                return string.Empty;
        }
        static string ShortToString(byte[] b,int startindex)
        {
            if(startindex+2<=b.Length)
                return BitConverter.ToInt16(b,startindex).ToString();
            else
                return string.Empty;
        }
        static string RationalToSingle(byte[] b,int startindex)
        {
            if(startindex+8<=b.Length)
                return (BitConverter.ToSingle(b,startindex)/BitConverter.ToSingle(b,startindex+4)).ToString();
            else
                return string.Empty;
        }
        static string ASCIIToString(byte[] b)
        {
            return Encoding.ASCII.GetString(b);
        }
    }

}
Copyright ◎2008-2018郑州越辰科技有限公司 版权所有 网站地图
地址:中国·河南郑州市文化路交北环路北晨e时代B座505室 
电话:0371-63399049 13663712063 备案号:豫ICP备19031456号
我们专注于 软件开发| 网站制作  返回欢迎页 
  
点击这里给我发消息 越辰业务
点击这里给我发消息 越辰业务
点击这里给我发消息 越辰代理
点击这里给我发消息 越辰技术
 ,页面执行时间:15.625毫秒        
up close

返回顶部

越辰科技微信
微信扫一扫