public async Task <IActionResult> Crop([FromQuery] ImageCropInputModel imageCropInputModel) { if (ModelState.IsValid) { return(BadRequest(ModelState)); } var modifiedImage = await _imageProcessor.CropImage(imageCropInputModel); return(File(modifiedImage.ImageAsBytes, modifiedImage.ImageFormat)); }
public async Task <ModifiedImage> CropImage(ImageCropInputModel imageCropInputModel) { var image = await _imageService.GetImageAsSkBitmap(imageCropInputModel.Url); var info = GetImageInfo(imageCropInputModel); var encoding = imageCropInputModel.GetEncoding(); using (var surface = SKSurface.Create(info)) { var sourceRectangle = new SKRect(imageCropInputModel.Left, imageCropInputModel.Top, imageCropInputModel.Right, imageCropInputModel.Bottom); var destRectangle = GetDestinationRectangle(imageCropInputModel); surface.Canvas.DrawBitmap(image, sourceRectangle, destRectangle); return(await _imageService.SaveImage(surface, encoding)); } }