Example #1
0
        private async Task <IActionResult> ResizeImage(Domain.Image file, int width, int height)
        {
            var image = Image.Load(file.Path, out IImageFormat format);

            image.Mutate(x => x.Resize(width, height));

            var ms = new MemoryStream();

            image.Save(ms, format);

            await AttachEditedImage(ms, file, ImageOperation.Resize, width, height);

            return(File(ms, file.MimeType, file.Filename));
        }
Example #2
0
        private async Task <EditedImage> AttachEditedImage(MemoryStream stream, Domain.Image image, ImageOperation operation, int width, int height)
        {
            var physicalFile = await new StoreFileDto
            {
                File     = stream,
                Filename = image.Filename
            }.CreatePhysicalFile();

            var editedImage = new EditedImage
            {
                Width     = width,
                Height    = height,
                ImageId   = image.Id,
                Operation = operation,
                Path      = physicalFile.Path,
            };

            context.Add(editedImage);
            await context.SaveChangesAsync();

            return(editedImage);
        }
Example #3
0
        private async Task <Domain.Image> GetImageWitEditedAndValidate(Guid uid, Guid?token)
        {
            Domain.Image image = null;

            try
            {
                image = await context.Set <Domain.Image>()
                        .Where(x => x.IsPublic == !token.HasValue && x.UID == uid)
                        .Select(x => new Domain.Image
                {
                    User = new Backend.Domain.User
                    {
                        Token = x.User.Token
                    },
                    Path         = x.Path,
                    Width        = x.Width,
                    Height       = x.Height,
                    EditedImages = x.EditedImages,
                    MimeType     = x.MimeType,
                    Filename     = x.Filename,
                    Id           = x.Id
                })
                        .SingleAsync();
            }
            catch (Exception ex)
            {
                throw new Exceptions.FileNotFoundException(ex);
            }

            if (token.HasValue && image.User.Token != token.Value)
            {
                throw new Exceptions.FileNotFoundException(null);
            }

            return(image);
        }