예제 #1
0
        /// <summary>
        /// Read image flags from the file
        /// </summary>
        public void ReadFlags(BufferReader reader, int offset)
        {
            CalibRange_min = reader.ReadSingleBE(offset + 92);
            CalibRange_max = reader.ReadSingleBE(offset + 96);


            Device           = reader.ReadNullTerminatedString(offset + 142, 12);
            DeviceSerial     = reader.ReadNullTerminatedString(offset + 186, 16);
            Optics           = reader.ReadNullTerminatedString(offset + 202, 32);
            OpticsResolution = reader.ReadNullTerminatedString(offset + 234, 32);
            OpticsText       = reader.ReadNullTerminatedString(offset + 554, 48);

            ShotRange_start_ERROR = reader.ReadSingleBE(offset + 532);
            ShotRange_size        = reader.ReadSingleBE(offset + 536);


            TimeStamp_Raw         = reader.ReadDoubleBE(8, offset + 540);
            TimeStampMilliseconds = reader.ReadIntBE(offset + 548);

            TimeStamp = Double2DateTime(TimeStamp_Raw, TimeStampMilliseconds);
        }
예제 #2
0
        /// <summary>
        /// Read the compressing "pallet" from file
        /// </summary>
        private float[] ReadPallet(BufferReader reader, int offset)
        {
            float[] palette = new float[256];

            int pos = offset;

            for (int i = 0; i < 256; i++)
            {
                palette[i] = reader.ReadSingleBE(pos);
                pos       += 4;
            }

            return(palette);
        }
예제 #3
0
        /// <summary>
        /// Read a image from the file
        /// </summary>
        public bool ReadImage(int imageIndex)
        {
            System.DateTime FrameTime = System.DateTime.Now;


            var reader = new BufferReader(this.reader.GetImageData(imageIndex));

            if (reader.Eof)
            {
                return(false);
            }

            Width  = 0;
            Height = 0;


            //- Image header
            BytePerPixel = reader.ReadWordBE();
            Compressed   = reader.ReadWordBE();
            Width        = reader.ReadWordBE();
            Height       = reader.ReadWordBE();


            reader.ReadIntBE();  //-- don't know - alway 0
            reader.ReadWordBE(); //-- don't know - alway 0

            //- dont know why but it is alwasy the width -1
            if (reader.ReadWordBE() != (Width - 1))
            {
                logging.addError("??? value != (Height - 1)");
            }


            reader.ReadWordBE(); //-- don't know - alway 0

            //- dont know why but it is alwasy the height -1
            if (reader.ReadWordBE() != (Height - 1))
            {
                logging.addError("??? value != (Height - 1)");
            }


            reader.ReadWordBE(); //-- don't know - alway 0
            reader.ReadWordBE(); //-- don't know - alway 0

            Emissivity = reader.ReadSingleBE();

            Distanz = reader.ReadSingleBE();

            EnvironmentalTemp = reader.ReadSingleBE();


            reader.ReadWordBE(); //-- don't know - always 0
            reader.ReadWordBE(); //-- don't know - always 0

            PathTemperature = reader.ReadSingleBE();

            reader.ReadWordBE(); //-- don't know - always 0x65
            reader.ReadWordBE(); //-- don't know - always 0


            CenterWavelength = reader.ReadSingleBE();


            reader.ReadWordBE(); //-- don't know - always 0
            reader.ReadWordBE(); //-- don't know - always 0xH4080
            reader.ReadWordBE(); //-- don't know - always 0x9
            reader.ReadWordBE(); //-- don't know - always 0x101


            if ((Width > 10000) || (Height > 10000))
            {
                logging.addError("Defect Irbis Image File: Image Width(" + Width + ") or Height(" + Height + ") is out of range!");
                Width  = 1;
                Height = 1;
                return(false);
            }

            //- liest weitere Bildinforationen aus
            this.ReadFlags(reader, 1084);

            Data = ReadImageData(reader, 0x6C0, Width, Height, 60, Compressed);



            if (reader.Eof)
            {
                logging.addError("end of file!");
            }

            return(true);
        }