Beispiel #1
0
        public Photobook Create(Photobook item, MediaStreamContainer cover, IEnumerable <MediaStreamContainer> files)
        {
            var existingPhotobooks = FileManager.GetDirectories(_contentPath, "Photobook*");

            cover.FileName = "cover." + cover.FileName.Split(".").LastOrDefault();

            DirectoryStructureContainer dir = new DirectoryStructureContainer(
                Path.Combine(_contentPath, $"Photobook{DateTime.Now.Ticks.ToString("x")}"),
                new List <MediaStreamContainer>()
            {
                cover
            },
                new List <DirectoryStructureContainer>()
            {
                new DirectoryStructureContainer("Photos")
            });


            item.Path          = dir.AbsolutePath;
            item.CoverPath     = dir.Files[0].FileName.Replace(_env.WebRootPath, string.Empty);
            item.CreatedAtTime = DateTime.UtcNow;
            item.Photos ??= new List <PhotobookPhoto>();
            item.Priority = existingPhotobooks.Count + 1;

            var photoDir     = dir.GetDirectory("Photos");
            int photoCounter = 1;

            foreach (var file in files)
            {
                var thumbFile = new MediaStreamContainer(ImageProcessor.ResizeImage(file.ContentStream, ThumbnailDimensionProvider.Width, ThumbnailDimensionProvider.Height))
                {
                    ContentType = file.ContentType,
                    FileName    = $"{file.FileName.Split(".")[^2]}_thumb.{file.FileName.Split(".")[^1]}"
        public CanvasPicture Create(CanvasPicture item, MediaStreamContainer cover, MediaStreamContainer canvasPhoto)
        {
            var existingPhotobooks = FileManager.GetDirectories(_contentPath, "Canvas*");

            cover.FileName       = "cover." + cover.FileName.Split(".").LastOrDefault();
            canvasPhoto.FileName = "photo." + canvasPhoto.FileName.Split(".").LastOrDefault();

            DirectoryStructureContainer dir = new DirectoryStructureContainer(
                Path.Combine(_contentPath, $"Canvas{DateTime.Now.Ticks.ToString("x")}"),
                new List <MediaStreamContainer>()
            {
                cover, canvasPhoto
            });

            item.Path          = dir.AbsolutePath;
            item.CoverPath     = dir.Files.Where(f => f.FileName.Contains("cover")).FirstOrDefault().FileName.Replace(_env.WebRootPath, string.Empty);
            item.PhotoPath     = dir.Files.Where(f => f.FileName.Contains("photo")).FirstOrDefault().FileName.Replace(_env.WebRootPath, string.Empty);
            item.CreatedAtTime = DateTime.UtcNow;
            item.Priority      = existingPhotobooks.Count + 1;

            FileManager.CreateDirectoryStructure(dir, true);

            //Add it to database
            base.Create(item);

            return(item);
        }
        public ActionResult Create(Photobook photobook,
                                   [FromForm(Name = "cover")] IFormFile cover,
                                   [FromForm(Name = "files")] IEnumerable <IFormFile> files)
        {
            //var x = Request.Form.Files;
            if (ModelState.IsValid && cover != null && files?.Count() > 0)
            {
                try
                {
                    using var coverReadStream = cover.OpenReadStream();
                    MediaStreamContainer coverStreamContainer = new MediaStreamContainer(coverReadStream)
                    {
                        ContentType = cover.ContentType,
                        FileName    = cover.FileName
                    };


                    List <MediaStreamContainer> fileStreamContainers = new List <MediaStreamContainer>();
                    foreach (var file in files)
                    {
                        MediaStreamContainer fileStream = new MediaStreamContainer(file.OpenReadStream())
                        {
                            ContentType = file.ContentType,
                            FileName    = file.FileName
                        };
                        fileStreamContainers.Add(fileStream);
                    }


                    _mediaStoreService.Photobooks.Create(photobook, coverStreamContainer, fileStreamContainers);


                    //Disposable
                    coverStreamContainer.Dispose();
                    foreach (var f in fileStreamContainers)
                    {
                        f.Dispose();
                    }

                    return(RedirectToAction(nameof(Index)));
                }
                catch (Exception e)
                {
                    return(View());
                }
            }
            else
            {
                ModelState.AddModelError("files", "Please upload at least one image");
                ModelState.AddModelError("cover", "Please select one image");
                return(View(photobook));
            }
        }
Beispiel #4
0
        private void Cb_Containers_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            try
            {
                if (Cb_Containers.SelectedIndex < 0)
                {
                    return;
                }

                MediaStreamContainer mediaStreamContainer = (MediaStreamContainer)Cb_Containers.SelectedItem;
                FillCodecsCombobox(mediaStreamContainer);
                selectUsersCodec();
            }
            catch (Exception) { }
        }
Beispiel #5
0
        private void FillCodecsCombobox(MediaStreamContainer mediaStreamContainer)
        {
            AviCompressor[]      compressors          = AviCompressor.AviCompressors;
            List <AviCompressor> availableCompressors = new List <AviCompressor>();

            for (int i = 0; i < compressors.Length; i++)
            {
                if (mediaStreamContainer.IsCodecSupported(compressors[i]))
                {
                    availableCompressors.Add(compressors[i]);
                }
            }
            Cb_Codecs.ItemsSource = availableCompressors;
            selectUsersCodec();
        }
Beispiel #6
0
 private void FillContainerCombobox(MediaStreamContainer mediaStreamContainer = null)
 {
     MediaStreamContainer[] containers = MediaStreamContainer.MediaStreamContainers;
     Cb_Containers.ItemsSource = containers;
     selectUsersContainer();
 }