Skip to content

Instantly share code, notes, and snippets.

@andre-f-paggi
Last active July 24, 2020 17:15
Show Gist options
  • Save andre-f-paggi/23c73dbad8fa5843fb0e940dfc8d77cc to your computer and use it in GitHub Desktop.
Save andre-f-paggi/23c73dbad8fa5843fb0e940dfc8d77cc to your computer and use it in GitHub Desktop.
private byte[] ResizeImg(byte[] originalImageBuffer)
{
using var ms = new MemoryStream(originalImageBuffer);
using (var originalImage = new Bitmap(Image.FromStream(ms)))
{
var maxWidthInPixels = 300;
int height = originalImage.Height;
int width = originalImage.Width;
if (originalImage.Width > maxWidthInPixels)
{
var ratio = originalImage.Width * 1.0 / maxWidthInPixels;
height = Convert.ToInt32(originalImage.Height * 1.0 / ratio);
width = Convert.ToInt32(originalImage.Width * 1.0 / ratio);
var resizedImage = new Bitmap(width, height);
using (var graphics = Graphics.FromImage(resizedImage))
{
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.DrawImage(originalImage, 0, 0, width, height);
var qualityParamId = System.Drawing.Imaging.Encoder.Quality;
var encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(qualityParamId, 100);
var codec = ImageCodecInfo.GetImageDecoders().FirstOrDefault(codec => codec.FormatID == ImageFormat.Png.Guid);
using (MemoryStream ms2 = new MemoryStream())
{
resizedImage.Save(ms2, codec, encoderParameters);
return ms2.ToArray();
}
}
}
return originalImageBuffer;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment