コード例 #1
0
        public override int GetHashCode()
        {
            var hashCode = 895644725;

            hashCode = hashCode * -1521134295 + Id.GetHashCode();
            hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(BookingReference);

            hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(Last4CardDigits);

            hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(CardType);

            hashCode = hashCode * -1521134295 + DateTimeCreated.GetHashCode();
            hashCode = hashCode * -1521134295 + EqualityComparer <SelectedFlights> .Default.GetHashCode(FlightsDetails);

            return(hashCode);
        }
コード例 #2
0
        /// <summary>
        /// Embed the data into given image in memory.
        /// NOTE: You will still need to save the image to disk yourself
        /// </summary>
        /// <param name="image">Image in memory in which to write the embedded data</param>
        /// <exception cref="System.Exception">Not all image data was given correctly.</exception>
        public void SaveToImage(Image image)
        {
            if (image.PropertyItems.Length == 0)
            {
                throw new Exception("No property items detected on the given Image object.");
            }

            PropertyItem tempPropItem = image.PropertyItems[0];

            byte[] b_Time  = new byte[24];
            byte[] justOne = BitConverter.GetBytes(1);
            byte[] temp    = BitConverter.GetBytes(GPSHours);
            Array.Copy(temp, 0, b_Time, 0, 4);
            Array.Copy(justOne, 0, b_Time, 4, 4);
            temp = BitConverter.GetBytes(GPSMinutes);
            Array.Copy(temp, 0, b_Time, 8, 4);
            Array.Copy(justOne, 0, b_Time, 12, 4);
            int[] frac = ConvertToFraction(GPSSeconds);
            Array.Copy(BitConverter.GetBytes(frac[0]), 0, b_Time, 16, 4);
            Array.Copy(BitConverter.GetBytes(frac[1]), 0, b_Time, 20, 4);
            tempPropItem.Id    = (int)ProportyItemId.gpsTime;
            tempPropItem.Type  = 5;
            tempPropItem.Len   = b_Time.Length;
            tempPropItem.Value = b_Time;
            image.SetPropertyItem(tempPropItem);

            if (!String.IsNullOrEmpty(CameraModel))
            {
                byte[] byteoriginal = asciiEncoder.GetBytes(CameraModel);
                byte[] bytes        = new byte[(byteoriginal.Length + 1)];
                Array.Copy(byteoriginal, 0, bytes, 0, byteoriginal.Length);
                bytes[(bytes.Length - 1)] = 0;
                tempPropItem.Id           = (int)ProportyItemId.cameraModel;
                tempPropItem.Type         = 2;
                tempPropItem.Len          = bytes.Length;
                tempPropItem.Value        = bytes;
                image.SetPropertyItem(tempPropItem);
            }

            if (GPSLatitudeDegrees.HasValue)
            {
                byte[] latBytes = GetBytesGPSLatitude();
                tempPropItem.Id    = (int)ProportyItemId.gpsLat;
                tempPropItem.Type  = 5;
                tempPropItem.Len   = latBytes.Length;
                tempPropItem.Value = latBytes;
                image.SetPropertyItem(tempPropItem);
            }
            else
            {
                if (image.PropertyItems.Any(pi => pi.Id == (int)ProportyItemId.gpsLat))
                {
                    image.RemovePropertyItem((int)ProportyItemId.gpsLat);
                }
            }

            if (GPSLongitudeDegrees.HasValue)
            {
                byte[] longBytes = GetBytesGPSLongitude();
                tempPropItem.Id    = (int)ProportyItemId.gpsLong;
                tempPropItem.Type  = 5;
                tempPropItem.Len   = longBytes.Length;
                tempPropItem.Value = longBytes;
                image.SetPropertyItem(tempPropItem);
            }
            else
            {
                if (image.PropertyItems.Any(pi => pi.Id == (int)ProportyItemId.gpsLong))
                {
                    image.RemovePropertyItem((int)ProportyItemId.gpsLong);
                }
            }

            byte[] b_AltRef = new byte[] { 0x0 };
            tempPropItem.Id    = (int)ProportyItemId.gpsAltRef;
            tempPropItem.Type  = 1;
            tempPropItem.Len   = 1;
            tempPropItem.Value = b_AltRef;
            image.SetPropertyItem(tempPropItem);

            byte[] latRefBytes = new byte[2];
            latRefBytes[0]     = asciiEncoder.GetBytes(GPSLatitudeRef)[0];
            tempPropItem.Id    = (int)ProportyItemId.gpsLatRef;
            tempPropItem.Type  = 2;
            tempPropItem.Len   = latRefBytes.Length;
            tempPropItem.Value = latRefBytes;
            image.SetPropertyItem(tempPropItem);

            byte[] longRefBytes = new byte[2];
            longRefBytes[0]    = asciiEncoder.GetBytes(GPSLongitudeRef)[0];
            tempPropItem.Id    = (int)ProportyItemId.gpsLongRef;
            tempPropItem.Type  = 2;
            tempPropItem.Len   = longRefBytes.Length;
            tempPropItem.Value = longRefBytes;
            image.SetPropertyItem(tempPropItem);

            byte[] b_Heading = GetYAWBytes();
            tempPropItem.Id    = (int)ProportyItemId.yaw;
            tempPropItem.Type  = 5;
            tempPropItem.Len   = b_Heading.Length;
            tempPropItem.Value = b_Heading;
            image.SetPropertyItem(tempPropItem);

            //tempPropItem = image.
            byte[] b_Alt = GetGPSAltBytes();
            tempPropItem.Id    = (int)ProportyItemId.gpsAlt;
            tempPropItem.Type  = 5;
            tempPropItem.Len   = b_Alt.Length;
            tempPropItem.Value = b_Alt;
            image.SetPropertyItem(tempPropItem);

            image.SetMetaValue((int)ProportyItemId.title, (short)ExifType.ASCII, Title);
            image.SetMetaValue((int)ProportyItemId.comment, (short)ExifType.ByteArray, Comments);
            image.SetMetaValue((int)ProportyItemId.author, (short)ExifType.ASCII, Author);
            image.SetMetaValue((int)ProportyItemId.keywords, (short)ExifType.ByteArray, Keywords);
            image.SetMetaValue((int)ProportyItemId.subject, (short)ExifType.ByteArray, Subject);

            image.SetMetaValue((int)ProportyItemId.dateTimeTaken, (short)ExifType.ASCII, DateTimeCreated.ToString("yyyy:MM:dd HH:mm:ss"));
        }