Пример #1
0
 protected virtual void ParseIfdBlock(IfdBlock block, BinaryReader reader)
 {
     switch (block.tag)
     {
         case IfdTag.ImageWidth:
             ImageWidth = block.GetUInt16();
             break;
         case IfdTag.ImageLength:
             ImageHeight = block.GetUInt16();
             break;
         case IfdTag.Make:
             Maker = block.GetString();
             break;
         case IfdTag.Model:
             Model = block.GetString();
             break;
         case IfdTag.StripOffsets:
             StripOffset = (int) block.GetUInt32();
             break;
         case IfdTag.Orientation:
             Orientation = (int) block.GetUInt32();
             break;
         case IfdTag.RowsPerStrip:
             StripByteCounts = (int) block.GetUInt32();
             break;
         case IfdTag.ExifIFD:
             reader.BaseStream.Seek(block.GetUInt32(), SeekOrigin.Begin);
             ParseIfd(reader);
             break;
         case IfdTag.ExposureTime:
             Shutter = block.GetFraction();
             break;
         case IfdTag.FNumber:
             Aperture = block.GetFraction();
             break;
         case IfdTag.ExposureProgram:
             ExposureProgram = (int) block.GetUInt32();
             break;
         case IfdTag.ExifVersion:
             ExifVersion = block.GetString();
             break;
         case IfdTag.DateTimeOriginal:
             DateTimeOriginal = block.GetString();
             break;
         case IfdTag.DateTimeDigitized:
             DateTimeDigitized = block.GetString();
             break;
         case IfdTag.ExposureBiasValue:
             ExposureBiasValue = block.GetFraction();
             break;
         case IfdTag.MaxApertureValue:
             MaxApertureValue = block.GetFraction();
             break;
         case IfdTag.MeteringMode:
             MeteringMode = (int) block.GetUInt32();
             break;
         case IfdTag.Flash:
             Flash = (int) block.GetUInt32();
             break;
         case IfdTag.FocalLength:
             FocalLength = block.GetFraction();
             break;
         case IfdTag.SubsecTimeOriginal:
             SubsecTimeOriginal = block.GetString();
             break;
         case IfdTag.SubsecTimeDigitized:
             SubsecTimeDigitized = block.GetString();
             break;
         case IfdTag.FileSource:
             FileSource = (int) block.GetUInt32();
             break;
     }
 }
Пример #2
0
        protected override void ParseIfdBlock(IfdBlock block, BinaryReader reader)
        {
            PanasoncIfdTag tag;
            if (!TagMap.TryGetValue(block.rawtag, out tag))
            {
                base.ParseIfdBlock(block, reader);
                return;
            }

            switch (tag)
            {
                case PanasoncIfdTag.CropLeft:
                    CropLeft = (int) block.GetUInt32();
                    CropRight += CropLeft;
                    break;
                case PanasoncIfdTag.CropTop:
                    CropTop = (int) block.GetUInt32();
                    CropBottom += CropTop;
                    break;
                case PanasoncIfdTag.CropWidth:
                    CropRight += (int) block.GetUInt32();
                    break;
                case PanasoncIfdTag.CropHeight:
                    CropBottom += (int) block.GetUInt32();
                    break;
                case PanasoncIfdTag.Filters:
                    Filters = (int) block.GetUInt32();
                    break;
                case PanasoncIfdTag.Iso:
                    Iso = (int) block.GetUInt32();
                    break;
                case PanasoncIfdTag.Black:
                    Black[block.rawtag - 28] = block.GetUInt16();
                    Black[3] = Black[1];
                    break;
                case PanasoncIfdTag.CamMul:
                    if (CamMul == null) CamMul = new float[3];
                    CamMul[block.rawtag - 36] = block.GetUInt16();
                    break;
                case PanasoncIfdTag.Thumb:
                    Thumbnail = block.rawdata;
                    break;
                case PanasoncIfdTag.RawOffset:
                    RawOffset = (int) block.GetUInt32();
                    break;
            }
        }
Пример #3
0
        protected virtual void ParseIfdBlock(IfdBlock block, BinaryReader reader)
        {
            switch (block.tag)
            {
            case IfdTag.ImageWidth:
                ImageWidth    = block.GetUInt16();
                block.variant = ImageWidth;
                break;

            case IfdTag.ImageLength:
                ImageHeight   = block.GetUInt16();
                block.variant = ImageHeight;
                break;

            case IfdTag.Make:
                Maker         = block.GetString();
                block.variant = Maker;
                break;

            case IfdTag.Model:
                Model         = block.GetString();
                block.variant = Model;
                break;

            case IfdTag.StripOffsets:
                StripOffset   = (int)block.GetUInt32();
                block.variant = StripOffset;
                break;

            case IfdTag.Orientation:
                Orientation   = (int)block.GetUInt32();
                block.variant = Orientation;
                break;

            case IfdTag.RowsPerStrip:
                StripByteCounts = (int)block.GetUInt32();
                block.variant   = StripByteCounts;
                break;

            case IfdTag.ExifIFD:
                reader.BaseStream.Seek(block.GetUInt32(), SeekOrigin.Begin);
                ParseIfd(reader);
                break;

            case IfdTag.ExposureTime:
                Shutter       = block.GetFraction();
                block.variant = Shutter.ToFloat();
                break;

            case IfdTag.FNumber:
                Aperture      = block.GetFraction();
                block.variant = Aperture.ToFloat();
                break;

            case IfdTag.ExposureProgram:
                ExposureProgram = (int)block.GetUInt32();
                block.variant   = ExposureProgram;
                break;

            case IfdTag.ExifVersion:
                ExifVersion   = block.GetString();
                block.variant = ExifVersion;
                break;

            case IfdTag.DateTimeOriginal:
                DateTimeOriginal = block.GetString();
                block.variant    = DateTimeOriginal;
                break;

            case IfdTag.DateTimeDigitized:
                DateTimeDigitized = block.GetString();
                block.variant     = DateTimeDigitized;
                break;

            case IfdTag.ExposureBiasValue:
                ExposureBiasValue = block.GetFraction();
                block.variant     = ExposureBiasValue.ToFloat();
                break;

            case IfdTag.MaxApertureValue:
                MaxApertureValue = block.GetFraction();
                block.variant    = MaxApertureValue.ToFloat();
                break;

            case IfdTag.MeteringMode:
                MeteringMode  = (int)block.GetUInt32();
                block.variant = MeteringMode;
                break;

            case IfdTag.Flash:
                Flash         = (int)block.GetUInt32();
                block.variant = Flash;
                break;

            case IfdTag.FocalLength:
                FocalLength   = block.GetFraction();
                block.variant = FocalLength.ToFloat();
                break;

            case IfdTag.SubsecTimeOriginal:
                SubsecTimeOriginal = block.GetString();
                block.variant      = SubsecTimeOriginal;
                break;

            case IfdTag.SubsecTimeDigitized:
                SubsecTimeDigitized = block.GetString();
                block.variant       = SubsecTimeDigitized;
                break;

            case IfdTag.FileSource:
                FileSource    = (int)block.GetUInt32();
                block.variant = FileSource;
                break;

            default:
                if (block.length <= 4)
                {
                    block.variant = block.GetUInt32();
                }
                else
                {
                    block.variant = (block.type == IfdType.UInt32Fraction) ? block.GetFraction().ToString() : string.Join(", ", block.rawdata);
                }
                break;
            }
        }
Пример #4
0
        protected virtual void ParseIfdBlock(IfdBlock block, BinaryReader reader)
        {
            switch (block.tag)
            {
            case IfdTag.ImageWidth:
                ImageWidth = block.GetUInt16();
                break;

            case IfdTag.ImageLength:
                ImageHeight = block.GetUInt16();
                break;

            case IfdTag.Make:
                Maker = block.GetString();
                break;

            case IfdTag.Model:
                Model = block.GetString();
                break;

            case IfdTag.StripOffsets:
                StripOffset = (int)block.GetUInt32();
                break;

            case IfdTag.Orientation:
                Orientation = (int)block.GetUInt32();
                break;

            case IfdTag.RowsPerStrip:
                StripByteCounts = (int)block.GetUInt32();
                break;

            case IfdTag.ExifIFD:
                reader.BaseStream.Seek(block.GetUInt32(), SeekOrigin.Begin);
                ParseIfd(reader);
                break;

            case IfdTag.ExposureTime:
                Shutter = block.GetFraction();
                break;

            case IfdTag.FNumber:
                Aperture = block.GetFraction();
                break;

            case IfdTag.ExposureProgram:
                ExposureProgram = (int)block.GetUInt32();
                break;

            case IfdTag.ExifVersion:
                ExifVersion = block.GetString();
                break;

            case IfdTag.DateTimeOriginal:
                DateTimeOriginal = block.GetString();
                break;

            case IfdTag.DateTimeDigitized:
                DateTimeDigitized = block.GetString();
                break;

            case IfdTag.ExposureBiasValue:
                ExposureBiasValue = block.GetFraction();
                break;

            case IfdTag.MaxApertureValue:
                MaxApertureValue = block.GetFraction();
                break;

            case IfdTag.MeteringMode:
                MeteringMode = (int)block.GetUInt32();
                break;

            case IfdTag.Flash:
                Flash = (int)block.GetUInt32();
                break;

            case IfdTag.FocalLength:
                FocalLength = block.GetFraction();
                break;

            case IfdTag.SubsecTimeOriginal:
                SubsecTimeOriginal = block.GetString();
                break;

            case IfdTag.SubsecTimeDigitized:
                SubsecTimeDigitized = block.GetString();
                break;

            case IfdTag.FileSource:
                FileSource = (int)block.GetUInt32();
                break;
            }
        }