C# Resize Images

Date: 2018-04-10
 
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Linq;
using System.Web;

namespace Default
{
    public class ImageHelper
    {
        private static int DoubleToIntDef(double d, int def)
        {
	        try
	        {
		        return Convert.ToInt32(d);
	        }
	        catch (Exception)
	        {
		        return def;
	        }
        }

        public static Size GetImageContainSize(Size currentSize, Size maxSize, bool scaleUp = false)
        {
	        Size newSize = currentSize;
	        double ratioX = Convert.ToDouble(maxSize.Width) / Convert.ToDouble(currentSize.Width);
	        double ratioY = Convert.ToDouble(maxSize.Height) / Convert.ToDouble(currentSize.Height);
	        double ratio = System.Math.Min(ratioX, ratioY);

	        if (ratio < 1.0 || scaleUp)
	        {
		        newSize.Width = DoubleToIntDef(Math.Floor(Convert.ToDouble(currentSize.Width) * ratio), 0);
		        newSize.Height = DoubleToIntDef(Math.Floor(Convert.ToDouble(currentSize.Height) * ratio), 0);
	        }
	        return newSize;
        }

        public static Bitmap ResizeImage(Image image, int width, int height)
        {
            var destRect = new Rectangle(0, 0, width, height);
            var destImage = new Bitmap(width, height);

            destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);

            using (var graphics = Graphics.FromImage(destImage))
            {
                graphics.CompositingMode = CompositingMode.SourceCopy;
                graphics.CompositingQuality = CompositingQuality.HighQuality;
                graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                graphics.SmoothingMode = SmoothingMode.HighQuality;
                graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;

                using (var wrapMode = new ImageAttributes())
                {
                    wrapMode.SetWrapMode(WrapMode.TileFlipXY);
                    graphics.DrawImage(image, destRect, 0, 0, image.Width,image.Height, GraphicsUnit.Pixel, wrapMode);
                }
            }

            return destImage;
        }
    }
}
8920cookie-checkC# Resize Images