Beispiel #1
0
        public void TestGetAllPictureListModelsByObjectId()
        {
            var model = new PictureDetailModel()
            {
                Name               = "Test picture",
                PhotoTakenDate     = DateTime.Now,
                Description        = "This is tests picture",
                Format             = EntityImageFormat.Jpg,
                ResolutionHeight   = 100,
                ResolutionWidth    = 100,
                PositionCollection = new List <PositionInPictureModel>
                {
                    new PositionInPictureModel
                    {
                        Height        = 10,
                        Width         = 10,
                        X             = 5,
                        Y             = 5,
                        PictureObject = new ObjectDetailModel
                        {
                            Description     = "Test object",
                            Name            = "Object test name",
                            PreviewFileName = "Preview of test object"
                        }
                    }
                }
            };
            var inserted = _repository.Insert(model);
            var founded  = _repository.GetAllPictureModelsByObjectId(inserted.Id);

            Assert.NotNull(founded);
            Assert.Equal(inserted.Id, founded.First().Id);
            Assert.Equal(inserted.Name, founded.First().Name);
        }
Beispiel #2
0
 private static void FormatFromImage(PictureDetailModel picture, Image image)
 {
     if (image.RawFormat.Equals(ImageFormat.Emf))
     {
         picture.Format = EntityImageFormat.Emf;  return;
     }
     if (image.RawFormat.Equals(ImageFormat.Exif))
     {
         picture.Format = EntityImageFormat.Exif; return;
     }
     if (image.RawFormat.Equals(ImageFormat.Gif))
     {
         picture.Format = EntityImageFormat.Gif;  return;
     }
     if (image.RawFormat.Equals(ImageFormat.Icon))
     {
         picture.Format = EntityImageFormat.Ico;  return;
     }
     if (image.RawFormat.Equals(ImageFormat.Jpeg))
     {
         picture.Format = EntityImageFormat.Jpg;  return;
     }
     if (image.RawFormat.Equals(ImageFormat.Png))
     {
         picture.Format = EntityImageFormat.Png;  return;
     }
     if (image.RawFormat.Equals(ImageFormat.Tiff))
     {
         picture.Format = EntityImageFormat.Tiff; return;
     }
     if (image.RawFormat.Equals(ImageFormat.Wmf))
     {
         picture.Format = EntityImageFormat.Wmf;
     }
 }
Beispiel #3
0
        public static PictureDetailModel FromFile(string fullFileName)
        {
            var filename  = Path.GetFileName(fullFileName);
            var extension = Path.GetExtension(fullFileName).Replace(".", string.Empty);

            if (!Enum.TryParse(extension, true, out EntityImageFormat format))
            {
                format = EntityImageFormat.None;
            }

            var result = new PictureDetailModel
            {
                Name               = filename,
                Source             = fullFileName,
                PositionCollection = new List <PositionInPictureModel>(),
                Format             = format
            };

            Image image;

            try
            {
                image = new Bitmap(fullFileName);
            }
            catch (FileNotFoundException e)
            {
                return(result);
            }

            FormatFromImage(result, image);
            result.ResolutionWidth  = image.Size.Width;
            result.ResolutionHeight = image.Size.Height;

            // from https://stackoverflow.com/questions/24971184/extract-image-file-metadata
            var encodings = new ASCIIEncoding();

            foreach (var propItem in image.PropertyItems)
            {
                if (propItem.Id.ToString("x").Equals("9003")) // taken date
                {
                    var datetime = encodings.GetString(propItem.Value, 0, propItem.Value.Length - 1);
                    if (DateTime.TryParseExact(datetime, "yyyy:MM:dd HH:mm:ss", null, DateTimeStyles.None, out var date))
                    {
                        result.PhotoTakenDate = date;
                    }
                }
            }
            return(result);
        }
Beispiel #4
0
        public PictureEntity MapToEntity(PictureDetailModel detail)
        {
            var HelpVar = new PictureEntity()
            {
                Id                      = detail.Id,
                Name                    = detail.Name,
                PhotoTakenDate          = detail.PhotoTakenDate,
                Description             = detail.Description,
                Format                  = detail.Format,
                ResolutionHeight        = detail.ResolutionHeight,
                ResolutionWidth         = detail.ResolutionWidth,
                PictureObjectCollection = new List <PositionInPictureEntity>(),
                Source                  = detail.Source
            };

            foreach (var item in detail.PositionCollection)
            {
                HelpVar.PictureObjectCollection.Add(_posMapper.MapToEntity(item));
            }
            return(HelpVar);
        }
Beispiel #5
0
        public PictureDetailModel MapToDetail(PictureEntity entity)
        {
            var HelpVar = new PictureDetailModel()
            {
                Id                 = entity.Id,
                Name               = entity.Name,
                PhotoTakenDate     = entity.PhotoTakenDate,
                Description        = entity.Description,
                Format             = entity.Format,
                ResolutionHeight   = entity.ResolutionHeight,
                ResolutionWidth    = entity.ResolutionWidth,
                PositionCollection = new List <PositionInPictureModel>(),
                Source             = entity.Source
            };

            foreach (var item in entity.PictureObjectCollection)
            {
                HelpVar.PositionCollection.Add(_posMapper.MapToModel(item));
            }
            return(HelpVar);
        }