private void ApplyResize(SKBitmap original, InputImageParameters inputImage, OutputImageParameters outputImage) { if (!outputImage.Resized) { return; } using (SKBitmap resized = original.Resize(new SKImageInfo(outputImage.Width, outputImage.Height), SKFilterQuality.High)) { if (resized == null) { throw new ArgumentException { Data = { { "ValidationData", new { Body = new { Image = "Something wrong with incoming image" } } } } } } ; using (SKImage image = SKImage.FromBitmap(resized)) { MemoryStream output = new MemoryStream(); image.Encode(inputImage.Format, outputImage.Quality).SaveTo(output); outputImage.OutputStream = output; } } }
public IEnumerable <OutputImageParameters> ResizeMultiple(InputImageParameters inputImage, IEnumerable <ImageSizeParam> targetSizes) { using (SKBitmap original = SKBitmap.Decode(inputImage.InputStream)) { if (original == null) { throw new ArgumentException { Data = { { "ValidationData", new { Body = new { Image = "Something wrong with incoming image" } } } } } } ; IOrderedEnumerable <OutputImageParameters> outputImages = targetSizes .Select(targetSize => CalculateSize(original.Width, original.Height, targetSize, inputImage.MinimumDifference)) .OrderByDescending(s => s.Width); foreach (OutputImageParameters outputImage in outputImages) { if (!outputImage.Resized) { continue; } ApplyResize(original, inputImage, outputImage); yield return(outputImage); } } }
private OutputImageParameters Resize(SKBitmap original, InputImageParameters inputImage, ImageSizeParam targetSize) { OutputImageParameters outputImage = CalculateSize(original.Width, original.Height, targetSize, inputImage.MinimumDifference); ApplyResize(original, inputImage, outputImage); return(outputImage); }
public OutputImageParameters Resize(InputImageParameters inputImage, ImageSizeParam targetSize) { using (SKBitmap original = SKBitmap.Decode(inputImage.InputStream)) { if (original == null) { throw new ArgumentException { Data = { { "ValidationData", new { Body = new { Image = "Something wrong with incoming image" } } } } } } ; return(Resize(original, inputImage, targetSize)); } }