Example #1
0
 private static void Quality(MagickImage image, ImageParameters parameters)
 {
     if (!(parameters.Quality is null))
     {
         image.Quality = parameters.Quality.Value;
     }
 }
Example #2
0
        private ActionResult IllegalCrop(ImageParameters parameters)
        {
            var caption = $"Acceptable crops:\n{string.Join("\n", Configuration.Crops.Select(m => $"{m.Name}"))}";
            var image   = ImageController.GetCaption(caption);

            this.Response.RegisterForDispose(image);

            ImageController.Resize(image, parameters);

            return(this.BadRequest(image));
        }
Example #3
0
        private ActionResult NotFound(ImageParameters parameters)
        {
            var image = ImageController.GetCaption("Not found");

            this.Response.RegisterForDispose(image);

            ImageController.Crop(image, parameters, new ImageDetails(3797 / 2, 5315 / 2));
            ImageController.Resize(image, parameters);
            ImageController.Quality(image, parameters);

            return(this.NotFound(image));
        }
Example #4
0
        private static void Download(ImageParameters parameters, HttpContext context)
        {
            if (parameters.Download)
            {
                var mapping     = Configuration.PhotoMappings.Single(row => row.MediaType == parameters.MediaType);
                var extension   = mapping.Extension;
                var fileName    = string.Format("{0}.{1}", parameters.Id, extension);
                var disposition = new ContentDispositionHeaderValue("attachment")
                {
                    FileName = fileName
                };

                context.Response.Headers[HeaderNames.ContentDisposition] = disposition.ToString();
            }
        }
Example #5
0
        private async Task <ActionResult> Process(ImageParameters parameters)
        {
            var details = await ImageDetails.GetById(parameters.Id);

            var image = await ImageController.GetImage(parameters.Id);

            this.Response.RegisterForDispose(image);

            ImageController.Crop(image, parameters, details);
            ImageController.Resize(image, parameters);
            ImageController.Quality(image, parameters);
            ImageController.Metadata(image, details);

            return(this.Ok(image));
        }
Example #6
0
 public async Task <ActionResult> Get(ImageParameters parameters)
 {
     try
     {
         return(await this.Process(parameters));
     }
     catch (ImageNotFoundException)
     {
         return(this.NotFound(parameters));
     }
     catch (UnkownCropException)
     {
         return(this.IllegalCrop(parameters));
     }
 }
Example #7
0
        private static void Resize(MagickImage image, ImageParameters parameters)
        {
            if (parameters.Width is null && parameters.Height is null)
            {
                return;
            }

            var size = new MagickGeometry(
                parameters.Width.GetValueOrDefault(image.Width),
                parameters.Height.GetValueOrDefault(image.Height));

            image.ColorSpace = ColorSpace.RGB;
            image.Scale(size);
            image.RePage();
            image.ColorSpace = ColorSpace.sRGB;
        }
Example #8
0
        private static void Crop(MagickImage image, ImageParameters parameters, ImageDetails details)
        {
            if (parameters.Crop is null)
            {
                return;
            }

            var crop = Configuration.Crops.SingleOrDefault(c => c.Name == parameters.Crop);

            if (crop.Name is null)
            {
                throw new UnkownCropException();
            }

            var x = 1;

            if (!(crop.OffsetX is null))
            {
                x = details.CenterX - crop.OffsetX.Value;
            }

            image.Crop(x, details.CenterY - crop.OffsetY, crop.Width, crop.Height);
        }