Пример #1
0
        /// <summary>
        /// Reads a property item specified by the PropertyItemID value and returns it as a string value.
        /// </summary>
        /// <param name="nPropertyID">Specifies the PropertyItem to get and read.</param>
        /// <returns></returns>
        public string GetExifProperty(PropertyItemID nPropertyID)
        {
            // Return an empty value if the PropertyItems array is null.
            if (m_oPropertyItems == null)
                return string.Empty;
            
            int nID = (int)nPropertyID;
            string sData = string.Empty;

            foreach (PropertyItem oPropertyItem in m_oPropertyItems)
            {
                if ((oPropertyItem != null) && (oPropertyItem.Id == nID))
                {
                    switch (oPropertyItem.Type)
                    {
                        case PROP_TYPE_BYTE:
                        case PROP_TYPE_ASCII:
                            sData = FormatTypeASCIIValue(oPropertyItem, nPropertyID);
                            break;
                        case PROP_TYPE_RATIONAL:
                            sData = FormatTypeRationalValue(oPropertyItem, nPropertyID);
                            break;
                        case PROP_TYPE_SRATIONAL:
                            sData = FormatTypeSRationalValue(oPropertyItem, nPropertyID);
                            break;
                        case PROP_TYPE_SHORT:
                            sData = FormatTypeShortValue(oPropertyItem, nPropertyID);
                            break;
                        case PROP_TYPE_UNDEFINED:
                            sData = FormatTypeUndefinedValue(oPropertyItem, nPropertyID);
                            break;
                    }

                    break;
                }
            }

            return sData;
        }
Пример #2
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="oPropertyItem"></param>
 /// <param name="nID"></param>
 /// <returns></returns>
 private string FormatTypeUndefinedValue(PropertyItem oPropertyItem, PropertyItemID nID)
 {
     switch (nID)
     {
         case PropertyItemID.ComponentsConfiguration:
             return GetComponentsConfiguration(oPropertyItem);
         case PropertyItemID.ExifVersion:
             return ASCIIEncoding.ASCII.GetString(oPropertyItem.Value);
         default:
             return string.Empty;
     }
 }
Пример #3
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="oPropertyItem"></param>
 /// <param name="nID"></param>
 /// <returns></returns>
 private string FormatTypeASCIIValue(PropertyItem oPropertyItem, PropertyItemID nID)
 {
     switch (nID)
     {
         case PropertyItemID.XPComment:
         case PropertyItemID.XPSubject:
             return UnicodeEncoding.Unicode.GetString(oPropertyItem.Value);
         default:
             return ASCIIEncoding.ASCII.GetString(oPropertyItem.Value);
     }
 }
Пример #4
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="oPropertyItem"></param>
        /// <param name="nID"></param>
        /// <returns></returns>
        private string FormatTypeSRationalValue(PropertyItem oPropertyItem, PropertyItemID nID)
        {
            if (oPropertyItem.Len == 8)
            {
                int n = BitConverter.ToInt32(oPropertyItem.Value, 0);
                int d = BitConverter.ToInt32(oPropertyItem.Value, 4);

                switch (nID)
                {
                    case PropertyItemID.ShutterSpeed:
                    case PropertyItemID.BrightnessValue:
                        return ((float)n / d).ToString("N2");
                }
            }

            return string.Empty;
        }
Пример #5
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="oPropertyItem"></param>
        /// <param name="nID"></param>
        /// <returns></returns>
        private string FormatTypeRationalValue(PropertyItem oPropertyItem, PropertyItemID nID)
        {
            if (oPropertyItem.Len == 8)
            {
                uint n = BitConverter.ToUInt32(oPropertyItem.Value, 0);
                uint d = BitConverter.ToUInt32(oPropertyItem.Value, 4);

                switch (nID)
                {
                    case PropertyItemID.CompressedBitsPerPixel:
                    case PropertyItemID.ExposureTime:
                        return ((float)n / d).ToString("N2");
                    case PropertyItemID.FNumber:
                        return ((float)n / d).ToString("N1");
                    case PropertyItemID.MaxAperture:
                        return (n / d).ToString();
                    case PropertyItemID.FocalLength:
                        return (n / d).ToString() + " mm";
                }
            }

            return string.Empty;
        }
Пример #6
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="oPropertyItem"></param>
 /// <param name="nID"></param>
 /// <returns></returns>
 private string FormatTypeShortValue(PropertyItem oPropertyItem, PropertyItemID nID)
 {
     switch (nID)
     {
         case PropertyItemID.Compression:
             return GetCompression(oPropertyItem);
         case PropertyItemID.Rating:
             return GetRating(oPropertyItem);
         case PropertyItemID.ColorSpace:
             return GetColourSpace(oPropertyItem);
         case PropertyItemID.ExposureMode:
             return GetExposureMode(oPropertyItem);
         case PropertyItemID.ExposureProgram:
             return GetExposureProgram(oPropertyItem);
         case PropertyItemID.Orientation:
             return GetOrientation(oPropertyItem);
         case PropertyItemID.Flash:
             return GetFlash(oPropertyItem);
         case PropertyItemID.MeteringMode:
             return GetMeteringMode(oPropertyItem);
         case PropertyItemID.ResolutionUnit:
             return GetResolutionUnit(oPropertyItem);
         case PropertyItemID.SceneCaptureType:
             return GetSceneCaptureType(oPropertyItem);
         case PropertyItemID.WhiteBalance:
             return GetWhiteBalance(oPropertyItem);
         case PropertyItemID.YCbCrPositioning:
             return GetYCbCrPositioning(oPropertyItem);
         case PropertyItemID.YCbCrSubSampling:
             return GetYCbCrSubSampling(oPropertyItem);
         case PropertyItemID.PhotometricInterpretation:
             return GetPhotometricInterpretation(oPropertyItem);
         case PropertyItemID.Thresholding:
             return GetThresholding(oPropertyItem);
         case PropertyItemID.LightSource:
             return GetLightSource(oPropertyItem);
         case PropertyItemID.Contrast:
             return GetContrast(oPropertyItem);
         case PropertyItemID.Saturation:
             return GetSaturation(oPropertyItem);
         case PropertyItemID.Sharpness:
             return GetSharpness(oPropertyItem);
         case PropertyItemID.ISOSpeed:
             return oPropertyItem.Value[0].ToString();
         default:
             return string.Empty;
     }
 }