Code Bye

怎么样获取照片的EXIF信息

手机拍的照片在手机里看角度一般是正常,上传到电脑后就是旋转90度的了,代码中怎么样读取EXIF信息来判断,C#试了一下Image.PropertyItems,里面可以访问到的参数好少,不象Java等其它的可以那么多直接指定方向旋转信息 …  求指导!
解决方案

20

http://www.codeproject.com/Articles/27242/ExifTagCollection-An-EXIF-metadata-extraction-libr

80

你可以这样读取
private static Dictionary<string, string> ReadExif(Image image)
{
    var exif = new Dictionary<string, string>();
    var properties = image.PropertyItems;
    foreach (var property in properties)
    {
        switch (property.Id)
        {
            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;
        }
    }
    return exif;
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么样获取照片的EXIF信息