﻿In V3.1:


* Add support for autocropping and cropping separately
* Simplify URL sytax with a 'resizing mode' instead of disparate features
mode=default
mode=crop
mode=pad 
mode=carve
mode=stretch
* Add support for an anchor point when autocropping and autopadding
anchor=center, topleft, energyaverage (for padding and cropping)
* Add support for resizing entire image (including effects) within the coordinates instead of just the image. Standard rotation will cause extra padding here..
* bounds=all|image


scale=upscaleonly|downscaleonly|both|upscalecanvas


Refactor code to avoid Response.Redirect() (ThreadAbortException), save a few ms.



Add debug=true querystring command to Diagnostics plugin.
Add better usage examples.

Add another image resizing pitfall....

ImageFormat.Gif.Equals(f)
true
ImageFormat.Gif == f
false

PrettyGifs - Add fastMode option that uses the original image palette to speed up processing times. (feature not yet added)
PsdComposer - Re-compose PSD files on-the-fly. Rewrite text layers, hide/show layers. Minimal support for layer effects, only glow and solid fill at the moment.


Add rounded corners plugin:
/// <summary>
        /// Rounds the corner of the image default cornering of the image precentage is 50%
        /// </summary>
        /// <param name="imagePath"></param>
        /// <param name="roundPrecentage"></param>
        public static bool Round(string imagePath, int roundPrecentage, Color backgroundColour)
        {
            Bitmap bitmapToSave = null;

            using (Image image = Image.FromFile(imagePath))
            {
                Bitmap bitmap = new Bitmap(image.Width, image.Height);

                Graphics graphics = Graphics.FromImage(bitmap);

                graphics.Clear(backgroundColour);

                graphics.SmoothingMode = SmoothingMode.AntiAlias;

                Brush brush = new System.Drawing.TextureBrush(image);

                Rectangle rectangle = new Rectangle(0, 0, image.Width, image.Height);

                GraphicsPath graphicsPath = new GraphicsPath();
                graphicsPath.AddArc(rectangle.X, rectangle.Y, roundPrecentage, roundPrecentage, 180, 90);
                graphicsPath.AddArc(rectangle.X + rectangle.Width - roundPrecentage, rectangle.Y, roundPrecentage, roundPrecentage, 270, 90);
                graphicsPath.AddArc(rectangle.X + rectangle.Width - roundPrecentage, rectangle.Y + rectangle.Height - roundPrecentage, roundPrecentage, roundPrecentage, 0, 90);
                graphicsPath.AddArc(rectangle.X, rectangle.Y + rectangle.Height - roundPrecentage, roundPrecentage, roundPrecentage, 90, 90);
                graphics.FillPath(brush, graphicsPath);
                graphics.Dispose();
                bitmapToSave = (Bitmap)bitmap;
                //bitmap.Dispose();
                brush.Dispose();
                graphicsPath.Dispose();

            }

            if (OverWrite(imagePath, bitmapToSave))
                return true;

            return false;
        }
