diff --git a/src/Umbraco.Core/Media/ImageHelper.cs b/src/Umbraco.Core/Media/ImageHelper.cs
index d419f6ffdc..c732b00ee0 100644
--- a/src/Umbraco.Core/Media/ImageHelper.cs
+++ b/src/Umbraco.Core/Media/ImageHelper.cs
@@ -25,6 +25,15 @@ namespace Umbraco.Core.Media
return codec.MimeType;
}
+ ///
+ /// Creates the thumbnails if the image is larger than all of the specified ones.
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
internal static IEnumerable GenerateMediaThumbnails(
IFileSystem fs,
string fileName,
@@ -32,22 +41,33 @@ namespace Umbraco.Core.Media
Image originalImage,
IEnumerable additionalThumbSizes)
{
- // Make default thumbnails
- var thumbs = new List
- {
- Resize(fs, fileName, extension, 100, "thumb", originalImage),
- Resize(fs, fileName, extension, 500, "big-thumb", originalImage)
- };
- //make custom ones
- foreach (var thumb in additionalThumbSizes.Where(x => x > 0).Distinct())
+ var result = new List();
+
+ var allSizes = new List {100, 500};
+ allSizes.AddRange(additionalThumbSizes.Where(x => x > 0).Distinct());
+
+ foreach (var s in allSizes)
{
- thumbs.Add(Resize(fs, fileName, extension, thumb, string.Format("thumb_{0}", thumb), originalImage));
+ if (originalImage.Width >= s && originalImage.Height >= s)
+ {
+ result.Add(Resize(fs, fileName, extension, s, "thumb", originalImage));
+ }
}
- return thumbs;
+ return result;
}
+ ///
+ /// Performs an image resize
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
private static ResizedImage Resize(IFileSystem fileSystem, string path, string extension, int maxWidthHeight, string fileNameAddition, Image originalImage)
{
var fileNameThumb = String.IsNullOrEmpty(fileNameAddition)
diff --git a/src/Umbraco.Web/Editors/ImagesController.cs b/src/Umbraco.Web/Editors/ImagesController.cs
index 080219f943..0089024803 100644
--- a/src/Umbraco.Web/Editors/ImagesController.cs
+++ b/src/Umbraco.Web/Editors/ImagesController.cs
@@ -100,6 +100,13 @@ namespace Umbraco.Web.Editors
return GetResized(imagePath, width, Convert.ToString(width));
}
+ ///
+ /// Gets a resized image - if the requested max width is greater than the original image, only the original image will be returned.
+ ///
+ ///
+ ///
+ ///
+ ///
private HttpResponseMessage GetResized(string imagePath, int width, string suffix)
{
var mediaFileSystem = FileSystemProviderManager.Current.GetFileSystemProvider();
@@ -121,12 +128,22 @@ namespace Umbraco.Web.Editors
if (fileStream.CanSeek) fileStream.Seek(0, 0);
using (var originalImage = Image.FromStream(fileStream))
{
- ImageHelper.GenerateThumbnail(
- originalImage,
- width,
- fullNewPath,
- "jpg",
- mediaFileSystem);
+ //If it is bigger, then do the resize
+ if (originalImage.Width >= width && originalImage.Height >= width)
+ {
+ ImageHelper.GenerateThumbnail(
+ originalImage,
+ width,
+ fullNewPath,
+ "jpg",
+ mediaFileSystem);
+ }
+ else
+ {
+ //just return the original image
+ fullNewPath = fullOrgPath;
+ }
+
}
}
}