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)); }
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); }
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); }