Example #1
0
        public void GeotagingFailure()
        {
            var task = WaitLocation();

            task.Wait();
            var position = task.Result;

            Debug.WriteLine("pos: " + position.Coordinate.Longitude + " " + position.Coordinate.Latitude);
            var mediaLibrary = new MediaLibrary();

            foreach (string filename in TestFiles.GeotagImages)
            {
                var image = TestUtil.GetResourceByteArray(filename);
                Assert.ThrowsException <GpsInformationAlreadyExistsException>(() =>
                {
                    var NewImage = MetaDataOperator.AddGeoposition(image, position);
                });

                GC.Collect();
                using (var imageStream = TestUtil.GetResourceStream(filename))
                {
                    Assert.ThrowsException <GpsInformationAlreadyExistsException>(() =>
                    {
                        var newImageStream = MetaDataOperator.AddGeoposition(imageStream, position);
                        newImageStream.Close();
                    });
                }
            }
        }
Example #2
0
        public void OverwriteGeotag()
        {
            var task = WaitLocation();

            task.Wait();
            var position = task.Result;

            Debug.WriteLine("pos: " + position.Coordinate.Longitude + " " + position.Coordinate.Latitude);
            var mediaLibrary = new MediaLibrary();

            int count = 0;

            foreach (string filename in TestFiles.ValidImages)
            {
                var image            = TestUtil.GetResourceByteArray(filename);
                var originalMetadata = JpegMetaDataParser.ParseImage(image);
                var NewImage         = MetaDataOperator.AddGeoposition(image, position, true);
                var newMetadata      = JpegMetaDataParser.ParseImage(NewImage);

                try
                {
                    var pic = mediaLibrary.SavePicture(string.Format("Exif addition test_" + count + "_{0:yyyyMMdd_HHmmss}.jpg", DateTime.Now), NewImage);
                }
                catch (NullReferenceException) { }

                GC.Collect();
                TestUtil.IsGpsDataAdded(originalMetadata, newMetadata);

                using (var imageStream = TestUtil.GetResourceStream(filename))
                {
                    originalMetadata = JpegMetaDataParser.ParseImage(imageStream);
                    var newImageStream = MetaDataOperator.AddGeoposition(imageStream, position, true);
                    try
                    {
                        var pic2 = mediaLibrary.SavePicture(string.Format("Exif addition test_" + count + "_stream_{0:yyyyMMdd_HHmmss}.jpg", DateTime.Now), newImageStream);
                    }
                    catch (NullReferenceException) { }
                    finally { newImageStream.Dispose(); }
                    TestUtil.IsGpsDataAdded(originalMetadata, newMetadata);

                    count++;
                }


                GC.Collect(); // Saving many big images in short time, memory mey be run out and it may throws NullReferenceException or OutOfMemoryException.
            }
        }