diff --git a/src/ImageProcessor.Web/HttpModules/ImageProcessingModule.cs b/src/ImageProcessor.Web/HttpModules/ImageProcessingModule.cs index 335df1cb5..d44596f65 100644 --- a/src/ImageProcessor.Web/HttpModules/ImageProcessingModule.cs +++ b/src/ImageProcessor.Web/HttpModules/ImageProcessingModule.cs @@ -95,7 +95,7 @@ namespace ImageProcessor.Web.HttpModules else { path = HostingEnvironment.MapPath(context.Request.Path); - queryString = context.Request.QueryString.ToString(); + queryString = HttpUtility.UrlDecode(context.Request.QueryString.ToString()); } if (ImageUtils.IsValidImageExtension(path) && !string.IsNullOrWhiteSpace(queryString)) diff --git a/src/ImageProcessor.Web/Properties/AssemblyInfo.cs b/src/ImageProcessor.Web/Properties/AssemblyInfo.cs index fb3d3a633..56fb6e850 100644 --- a/src/ImageProcessor.Web/Properties/AssemblyInfo.cs +++ b/src/ImageProcessor.Web/Properties/AssemblyInfo.cs @@ -31,6 +31,5 @@ using System.Runtime.InteropServices; // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.0.2.0")] +[assembly: AssemblyFileVersion("1.0.2.0")] diff --git a/src/ImageProcessor/Processors/Copy of Watermark.cs b/src/ImageProcessor/Processors/Copy of Watermark.cs deleted file mode 100644 index 1cf8fccc6..000000000 --- a/src/ImageProcessor/Processors/Copy of Watermark.cs +++ /dev/null @@ -1,332 +0,0 @@ -// ----------------------------------------------------------------------- -// -// TODO: Update copyright text. -// -// ----------------------------------------------------------------------- - -namespace ImageProcessor.Processors -{ - #region Using - using System.Collections.Generic; - using System.Drawing; - using System.Text.RegularExpressions; - using ImageProcessor.Helpers.Extensions; - using ImageProcessor.Imaging; - #endregion - - /// - /// Encapsulates methods to change the alpha component of the image to effect its transparency. - /// - public class Watermark : IGraphicsProcessor - { - /// - /// The regular expression to search strings for. - /// http://stackoverflow.com/questions/11263949/optimize-a-variable-regex - /// - private static readonly Regex QueryRegex = new Regex(@"watermark=(text-\w+\|position-\d+-\d+(\|color-([0-9a-fA-F]{3}){1,2}(\|size-\d+(\|style-(bold|italic|regular|strikeout|underline))?)?)?|\w+)", RegexOptions.Compiled); - - #region IGraphicsProcessor Members - /// - /// Gets the name. - /// - public string Name - { - get - { - return "Watermark"; - } - } - - /// - /// Gets the description. - /// - public string Description - { - get - { - return "Adds a watermark containing text to the image."; - } - } - - /// - /// Gets the regular expression to search strings for. - /// - public Regex RegexPattern - { - get - { - return QueryRegex; - } - } - - /// - /// Gets or sets DynamicParameter. - /// - public dynamic DynamicParameter - { - get; - set; - } - - /// - /// Gets the order in which this processor is to be used in a chain. - /// - public int SortOrder - { - get; - private set; - } - - /// - /// Gets or sets any additional settings required by the processor. - /// - public Dictionary Settings - { - get; - set; - } - - /// - /// The position in the original string where the first character of the captured substring was found. - /// - /// - /// The query string to search. - /// - /// - /// The zero-based starting position in the original string where the captured substring was found. - /// - public int MatchRegexIndex(string queryString) - { - int index = 0; - - // Set the sort order to max to allow filtering. - this.SortOrder = int.MaxValue; - - foreach (Match match in this.RegexPattern.Matches(queryString)) - { - if (match.Success) - { - if (index == 0) - { - // Set the index on the first instance only. - this.SortOrder = match.Index; - - TextLayer textLayer = new TextLayer(); - - // Split the string up. - string[] firstPass = match.Value.Split('=')[1].Split('|'); - - switch (firstPass.Length) - { - case 1: - textLayer.Text = firstPass[0]; - break; - case 2: - textLayer.Text = firstPass[0]; - textLayer.Position = this.GetPosition(firstPass[1]); - break; - - case 3: - textLayer.Text = firstPass[0]; - textLayer.Position = this.GetPosition(firstPass[1]); - textLayer.TextColor = this.GetColor(firstPass[2]); - break; - - case 4: - textLayer.Text = firstPass[0]; - textLayer.Position = this.GetPosition(firstPass[1]); - textLayer.TextColor = this.GetColor(firstPass[2]); - textLayer.FontSize = this.GetFontSize(firstPass[3]); - break; - - case 5: - textLayer.Text = firstPass[0]; - textLayer.Position = this.GetPosition(firstPass[1]); - textLayer.TextColor = this.GetColor(firstPass[2]); - textLayer.FontSize = this.GetFontSize(firstPass[3]); - textLayer.Style = this.GetFontStyle(firstPass[4]); - break; - } - - this.DynamicParameter = textLayer; - } - - index += 1; - } - } - - return this.SortOrder; - } - - /// - /// Processes the image. - /// - /// - /// The the current instance of the class containing - /// the image to process. - /// - /// - /// The processed image from the current instance of the class. - /// - public Image ProcessImage(ImageFactory factory) - { - Bitmap newImage = null; - Image image = factory.Image; - - try - { - newImage = new Bitmap(image) { Tag = image.Tag }; - - TextLayer textLayer = this.DynamicParameter; - string text = textLayer.Text; - int opacity = textLayer.Opacity; - int fontSize = textLayer.FontSize; - FontStyle fontStyle = textLayer.Style; - - using (Graphics graphics = Graphics.FromImage(newImage)) - { - using (Font font = this.GetFont(textLayer.Font, fontSize, fontStyle)) - { - using (StringFormat drawFormat = new StringFormat()) - { - using (Brush brush = new SolidBrush(Color.FromArgb(opacity, textLayer.TextColor))) - { - Point origin = textLayer.Position; - - // We need to ensure that there is a position set for the watermark - if (origin == Point.Empty) - { - // Work out the size of the text. - SizeF textSize = graphics.MeasureString(text, font, new SizeF(image.Width, image.Height), drawFormat); - - int x = (int)(image.Width - textSize.Width) / 2; - int y = (int)(image.Height - textSize.Height) / 2; - origin = new Point(x, y); - } - - graphics.DrawString(text, font, brush, origin, drawFormat); - } - } - } - - image.Dispose(); - image = newImage; - } - } - catch - { - if (newImage != null) - { - newImage.Dispose(); - } - } - - return image; - } - #endregion - - #region Private Methods - /// - /// Returns the correct for the given parameters - /// - /// - /// The font. - /// - /// - /// The font size. - /// - /// - /// The font style. - /// - /// - /// The correct - /// - private Font GetFont(string font, int fontSize, FontStyle fontStyle) - { - FontFamily fontFamily = string.IsNullOrEmpty(font) ? FontFamily.GenericSansSerif : new FontFamily(font); - - return new Font(fontFamily, fontSize, fontStyle, GraphicsUnit.Pixel); - } - - /// - /// Returns the correct for the given string. - /// - /// - /// The input string containing the value to parse. - /// - /// - /// The correct - /// - private Point GetPosition(string input) - { - int[] position = input.ToIntegerArray(); - int x = position[0]; - int y = position[1]; - - return new Point(x, y); - } - - /// - /// Returns the correct for the given string. - /// - /// - /// The input string containing the value to parse. - /// - /// - /// The correct - /// - private Color GetColor(string input) - { - // split on color-hex - return ColorTranslator.FromHtml("#" + input.Split('-')[1]); - } - - /// - /// Returns the correct for the given string. - /// - /// - /// The input string containing the value to parse. - /// - /// - /// The correct - /// - private int GetFontSize(string input) - { - // split on size-value - return int.Parse(input.Split('-')[1]); - } - - /// - /// Returns the correct for the given string. - /// - /// - /// The string containing the respective fontstyle. - /// - /// - /// The correct - /// - private FontStyle GetFontStyle(string input) - { - FontStyle fontStyle = FontStyle.Bold; - - switch (input.ToLowerInvariant()) - { - case "italic": - fontStyle = FontStyle.Italic; - break; - case "regular": - fontStyle = FontStyle.Regular; - break; - case "strikeout": - fontStyle = FontStyle.Strikeout; - break; - case "underline": - fontStyle = FontStyle.Underline; - break; - } - - return fontStyle; - } - #endregion - } -} diff --git a/src/ImageProcessor/Properties/AssemblyInfo.cs b/src/ImageProcessor/Properties/AssemblyInfo.cs index 7e54c7129..f783823f2 100644 --- a/src/ImageProcessor/Properties/AssemblyInfo.cs +++ b/src/ImageProcessor/Properties/AssemblyInfo.cs @@ -32,7 +32,6 @@ using System.Security; // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.0.2.0")] +[assembly: AssemblyFileVersion("1.0.2.0")] diff --git a/src/Nuget/ImageProcessor.1.0.2.nupkg b/src/Nuget/ImageProcessor.1.0.2.nupkg new file mode 100644 index 000000000..22643c0d5 Binary files /dev/null and b/src/Nuget/ImageProcessor.1.0.2.nupkg differ diff --git a/src/Nuget/ImageProcessor.Web.1.0.2.nupkg b/src/Nuget/ImageProcessor.Web.1.0.2.nupkg new file mode 100644 index 000000000..b9796ec8e Binary files /dev/null and b/src/Nuget/ImageProcessor.Web.1.0.2.nupkg differ