Ejemplo n.º 1
0
            public void ShouldReturnTheExifTagDescriptionWhenItIsPresent(ushort input, string expected)
            {
                var exifProfile = new ExifProfile();

                exifProfile.SetValue(ExifTag.ResolutionUnit, input);
                var value = exifProfile.GetValue(ExifTag.ResolutionUnit);

                Assert.Equal(expected, value.ToString());
            }
Ejemplo n.º 2
0
            public void ShouldReturnFalseWhenExifTagIsInvalid()
            {
                var exifProfile = new ExifProfile();

                Assert.Throws <NotSupportedException>(() =>
                {
                    exifProfile.SetValue(new ExifTag <int>((ExifTagValue)42), 42);
                });
            }
Ejemplo n.º 3
0
 public void ShouldAllowEmptyData()
 {
     using (var image = new MagickImage())
     {
         var data    = new byte[] { };
         var profile = new ExifProfile(data);
         image.SetProfile(profile);
     }
 }
            public void ShouldRemoveValueAndReturnTrue()
            {
                using (IMagickImage image = new MagickImage(Files.FujiFilmFinePixS1ProJPG))
                {
                    ExifProfile profile = image.GetExifProfile();

                    Assert.IsTrue(profile.RemoveValue(ExifTag.FNumber));
                }
            }
Ejemplo n.º 5
0
            public void ShouldRemoveFalseWhenProfileDoesNotContainTag()
            {
                using (IMagickImage image = new MagickImage(Files.FujiFilmFinePixS1ProJPG))
                {
                    ExifProfile profile = image.GetExifProfile();

                    Assert.IsFalse(profile.RemoveValue(ExifTag.Acceleration));
                }
            }
Ejemplo n.º 6
0
        public void Test_InvalidTag()
        {
            var exifProfile = new ExifProfile();

            ExceptionAssert.Throws <NotSupportedException>(() =>
            {
                exifProfile.SetValue((ExifTag)42, 42);
            });
        }
Ejemplo n.º 7
0
        private static ExifValue GetExifValue()
        {
            Image image = TestFile.Create(TestImages.Jpeg.Floorplan).CreateImage();

            ExifProfile profile = image.ExifProfile;

            Assert.NotNull(profile);

            return(profile.Values.First());
        }
Ejemplo n.º 8
0
        private static ExifValue GetExifValue()
        {
            using (MagickImage image = new MagickImage(Files.FujiFilmFinePixS1ProJPG))
            {
                ExifProfile profile = image.GetExifProfile();
                Assert.IsNotNull(profile);

                return(profile.Values.First());
            }
        }
Ejemplo n.º 9
0
            public void ShouldAllowNullValues()
            {
                var profile = new ExifProfile();

                profile.SetValue(ExifTag.ReferenceBlackWhite, null);

                var value = profile.GetValue(ExifTag.ReferenceBlackWhite);

                TestValue(value, null);
            }
Ejemplo n.º 10
0
            public void ShouldReturnStringWhenValueIsString()
            {
                var profile = new ExifProfile();

                profile.SetValue(ExifTag.Software, "Magick.NET");

                var value = profile.GetValue(ExifTag.Software);

                TestValue(value, "Magick.NET");
            }
Ejemplo n.º 11
0
 public void ParseMetadata(ExifProfile exifProfile)
 {
     DateTime    = TryParseExif(exifProfile, ExifTag.DateTimeOriginal);
     Camera      = TryParseExif(exifProfile, ExifTag.Make) + " " + TryParseExif(exifProfile, ExifTag.Model);
     Lens        = TryParseExif(exifProfile, ExifTag.LensModel);
     Fstop       = TryParseExif(exifProfile, ExifTag.FNumber);
     Exposure    = TryParseExif(exifProfile, ExifTag.ExposureTime);
     FocalLength = TryParseExif(exifProfile, ExifTag.FocalLength);
     Iso         = TryParseExif(exifProfile, ExifTag.ISOSpeedRatings);
 }
Ejemplo n.º 12
0
            public void ShouldReturnFalseWhenValueIsInvalidDataType2()
            {
                var profile = new ExifProfile();

                profile.SetValue(ExifTag.ShutterSpeedValue, new SignedRational(75.55));

                IExifValue value = profile.GetValue(ExifTag.ShutterSpeedValue);

                Assert.False(value.SetValue(75));
            }
Ejemplo n.º 13
0
        internal static ExifProfile GetExifProfile()
        {
            Image <Rgba32> image = TestFile.Create(TestImages.Jpeg.Baseline.Floorplan).CreateImage();

            ExifProfile profile = image.MetaData.ExifProfile;

            Assert.NotNull(profile);

            return(profile);
        }
Ejemplo n.º 14
0
            public void ShouldReturnOriginalDataWhenNotParsed()
            {
                using (IMagickImage image = new MagickImage(Files.FujiFilmFinePixS1ProJPG))
                {
                    ExifProfile profile = image.GetExifProfile();

                    var bytes = profile.ToByteArray();
                    Assert.AreEqual(4706, bytes.Length);
                }
            }
Ejemplo n.º 15
0
        private static ExifProfile GetExifProfile()
        {
            Image image = TestFile.Create(TestImages.Jpeg.Baseline.Floorplan).CreateImage();

            ExifProfile profile = image.ExifProfile;

            Assert.NotNull(profile);

            return(profile);
        }
Ejemplo n.º 16
0
        private async Task UploadImageAsync(string id, Image <Rgba32> image)
        {
            var fileName = $"./{id}.gif";
            var profile  = new ExifProfile();

            profile.SetValue(ExifTag.Copyright, _processingOptions.Copyright);
            image.MetaData.ExifProfile = profile;
            image.Save(fileName, _encoder);
            await _imageRepository.UploadImageAsync(id, fileName);
        }
Ejemplo n.º 17
0
            public void ShouldReturnFalseWhenValueIsInvalidDataType1()
            {
                var profile = new ExifProfile();

                profile.SetValue(ExifTag.Software, "Magick.NET");

                IExifValue value = profile.GetValue(ExifTag.Software);

                Assert.False(value.SetValue(10.5));
            }
Ejemplo n.º 18
0
        private static void TestMetaDataImpl(
            bool useIdentify,
            IImageDecoder decoder,
            string imagePath,
            int expectedPixelSize,
            bool exifProfilePresent,
            bool iccProfilePresent)
        {
            var testFile = TestFile.Create(imagePath);

            using (var stream = new MemoryStream(testFile.Bytes, false))
            {
                IImageInfo imageInfo = useIdentify
                                           ? ((IImageInfoDetector)decoder).Identify(Configuration.Default, stream)
                                           : decoder.Decode <Rgba32>(Configuration.Default, stream);

                Assert.NotNull(imageInfo);
                Assert.NotNull(imageInfo.PixelType);

                if (useIdentify)
                {
                    Assert.Equal(expectedPixelSize, imageInfo.PixelType.BitsPerPixel);
                }
                else
                {
                    // When full Image<TPixel> decoding is performed, BitsPerPixel will match TPixel
                    int bpp32 = Unsafe.SizeOf <Rgba32>() * 8;
                    Assert.Equal(bpp32, imageInfo.PixelType.BitsPerPixel);
                }

                ExifProfile exifProfile = imageInfo.MetaData.ExifProfile;

                if (exifProfilePresent)
                {
                    Assert.NotNull(exifProfile);
                    Assert.NotEmpty(exifProfile.Values);
                }
                else
                {
                    Assert.Null(exifProfile);
                }

                IccProfile iccProfile = imageInfo.MetaData.IccProfile;

                if (iccProfilePresent)
                {
                    Assert.NotNull(iccProfile);
                    Assert.NotEmpty(iccProfile.Entries);
                }
                else
                {
                    Assert.Null(iccProfile);
                }
            }
        }
Ejemplo n.º 19
0
 public void ShouldAllowEmptyStream()
 {
     using (var image = new MagickImage())
     {
         using (MemoryStream memStream = new MemoryStream())
         {
             var profile = new ExifProfile(memStream);
             image.SetProfile(profile);
         }
     }
 }
Ejemplo n.º 20
0
        private static ExifProfile CreateExifProfile()
        {
            var profile = new ExifProfile();

            foreach (KeyValuePair <ExifTag, object> exifProfileValue in TestProfileValues)
            {
                profile.SetValue(exifProfileValue.Key, exifProfileValue.Value);
            }

            return(profile);
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Gets the height of the image frame.
        /// </summary>
        /// <param name="exifProfile">The image frame exif profile.</param>
        /// <returns>The image height.</returns>
        private static int GetImageHeight(ExifProfile exifProfile)
        {
            IExifValue <Number> height = exifProfile.GetValue(ExifTag.ImageLength);

            if (height == null)
            {
                TiffThrowHelper.ThrowImageFormatException("The TIFF image frame is missing the ImageLength");
            }

            return((int)height.Value);
        }
Ejemplo n.º 22
0
        public void DamagedFiles <TPixel>(TestImageProvider <TPixel> provider)
            where TPixel : unmanaged, IPixel <TPixel>
        {
            Assert.Throws <ImageDifferenceIsOverThresholdException>(() => TestTiffDecoder(provider));

            using Image <TPixel> image = provider.GetImage(TiffDecoder);
            ExifProfile exif           = image.Frames.RootFrame.Metadata.ExifProfile;

            // PhotometricInterpretation is required tag: https://www.awaresystems.be/imaging/tiff/tifftags/photometricinterpretation.html
            Assert.Null(exif.GetValueInternal(ExifTag.PhotometricInterpretation));
        }
Ejemplo n.º 23
0
        /// <summary>
        /// Gets the width of the image frame.
        /// </summary>
        /// <param name="exifProfile">The image frame exif profile.</param>
        /// <returns>The image width.</returns>
        private static int GetImageWidth(ExifProfile exifProfile)
        {
            IExifValue <Number> width = exifProfile.GetValue(ExifTag.ImageWidth);

            if (width == null)
            {
                TiffThrowHelper.ThrowImageFormatException("The TIFF image frame is missing the ImageWidth");
            }

            return((int)width.Value);
        }
Ejemplo n.º 24
0
            public void ShouldCorrectlyHandleFraction()
            {
                var profile = new ExifProfile();

                profile.SetValue(ExifTag.ShutterSpeedValue, new SignedRational(75.55));

                var value = profile.GetValue(ExifTag.ShutterSpeedValue);

                Assert.IsNotNull(value);
                Assert.AreEqual("1511/20", value.ToString());
            }
Ejemplo n.º 25
0
        public void Values()
        {
            ExifProfile profile = GetExifProfile();

            TestProfile(profile);

            using Image <Rgba32> thumbnail = profile.CreateThumbnail <Rgba32>();
            Assert.NotNull(thumbnail);
            Assert.Equal(256, thumbnail.Width);
            Assert.Equal(170, thumbnail.Height);
        }
Ejemplo n.º 26
0
 public void Test_Constructor_Empty()
 {
     using (IMagickImage image = new MagickImage(Files.ImageMagickJPG))
     {
         using (MemoryStream memStream = new MemoryStream())
         {
             ExifProfile profile = new ExifProfile(memStream);
             image.AddProfile(profile);
         }
     }
 }
Ejemplo n.º 27
0
        private Task <string> ExtracTicketLicenseCodeViaTagsAsync(Stream imageStream)
        {
            imageStream.Position = 0;

            MagickImage magickImage = new MagickImage(imageStream);

            ExifProfile exifProfile = magickImage.GetExifProfile();

            var target = exifProfile?.Values?.FirstOrDefault(z => z.Tag == ExifTag.ImageUniqueID);

            return(Task.FromResult((string)target?.Value));
        }
Ejemplo n.º 28
0
        private static ExifProfile GetExifProfile()
        {
            using (FileStream stream = File.OpenRead(TestImages.Jpeg.Floorplan))
            {
                Image image = new Image(stream);

                ExifProfile profile = image.ExifProfile;
                Assert.NotNull(profile);

                return(profile);
            }
        }
Ejemplo n.º 29
0
        public void Values()
        {
            ExifProfile profile = GetExifProfile();

            TestProfile(profile);

            var thumbnail = profile.CreateThumbnail <Color, uint>();

            Assert.NotNull(thumbnail);
            Assert.Equal(256, thumbnail.Width);
            Assert.Equal(170, thumbnail.Height);
        }
        private static void TestMetadataImpl(
            bool useIdentify,
            IImageDecoder decoder,
            string imagePath,
            int expectedPixelSize,
            bool exifProfilePresent,
            bool iccProfilePresent)
        {
            TestImageInfo(
                imagePath,
                decoder,
                useIdentify,
                imageInfo =>
            {
                Assert.NotNull(imageInfo);
                Assert.NotNull(imageInfo.PixelType);

                if (useIdentify)
                {
                    Assert.Equal(expectedPixelSize, imageInfo.PixelType.BitsPerPixel);
                }
                else
                {
                    // When full Image<TPixel> decoding is performed, BitsPerPixel will match TPixel
                    int bpp32 = Unsafe.SizeOf <Rgba32>() * 8;
                    Assert.Equal(bpp32, imageInfo.PixelType.BitsPerPixel);
                }

                ExifProfile exifProfile = imageInfo.Metadata.ExifProfile;

                if (exifProfilePresent)
                {
                    Assert.NotNull(exifProfile);
                    Assert.NotEmpty(exifProfile.Values);
                }
                else
                {
                    Assert.Null(exifProfile);
                }

                IccProfile iccProfile = imageInfo.Metadata.IccProfile;

                if (iccProfilePresent)
                {
                    Assert.NotNull(iccProfile);
                    Assert.NotEmpty(iccProfile.Entries);
                }
                else
                {
                    Assert.Null(iccProfile);
                }
            });
        }