zoukankan      html  css  js  c++  java
  • C#获取图像Exif信息

    C#获取图像Exif信息

    来源:yocin  时间:2012-3-22 9:05:02  栏目:技术支持  点击率:501
    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);
            }
        }

    }
  • 相关阅读:
    梁祝(二胡独奏曲)
    《祝你一路顺风》-吴奇隆
    《祝你一路顺风》-吴奇隆(吉他谱)
    《少年王》片尾曲《白》——吴奇隆(简谱)
    《梁祝》-化蝶(五线谱)
    《西游记》--女儿情(简谱)
    cnn handwrite使用原生的TensorFlow进行预测
    tflearn 中文汉字识别,训练后模型存为pb给TensorFlow使用——模型层次太深,或者太复杂训练时候都不会收敛
    TensorFlow 图像预处理(一) 图像编解码,图像尺寸调整
    迁移学习算法之TrAdaBoost ——本质上是在用不同分布的训练数据,训练出一个分类器
  • 原文地址:https://www.cnblogs.com/xianyin05/p/3076520.html
Copyright © 2011-2022 走看看