aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Controller/Drawing/ImageProcessingOptions.cs32
-rw-r--r--MediaBrowser.Model/Drawing/DrawingUtils.cs5
-rw-r--r--MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs22
3 files changed, 58 insertions, 1 deletions
diff --git a/MediaBrowser.Controller/Drawing/ImageProcessingOptions.cs b/MediaBrowser.Controller/Drawing/ImageProcessingOptions.cs
index 76a079c57..9222a8907 100644
--- a/MediaBrowser.Controller/Drawing/ImageProcessingOptions.cs
+++ b/MediaBrowser.Controller/Drawing/ImageProcessingOptions.cs
@@ -40,5 +40,37 @@ namespace MediaBrowser.Controller.Drawing
public int? PercentPlayed { get; set; }
public string BackgroundColor { get; set; }
+
+ public bool HasDefaultOptions()
+ {
+ return HasDefaultOptionsWithoutSize() &&
+ !Width.HasValue &&
+ !Height.HasValue &&
+ !MaxWidth.HasValue &&
+ !MaxHeight.HasValue;
+ }
+
+ public bool HasDefaultOptionsWithoutSize()
+ {
+ return !CropWhiteSpace &&
+ (!Quality.HasValue || Quality.Value == 100) &&
+ IsOutputFormatDefault &&
+ !AddPlayedIndicator &&
+ !PercentPlayed.HasValue &&
+ string.IsNullOrEmpty(BackgroundColor);
+ }
+
+ private bool IsOutputFormatDefault
+ {
+ get
+ {
+ if (OutputFormat == ImageOutputFormat.Original)
+ {
+ return true;
+ }
+
+ return false;
+ }
+ }
}
}
diff --git a/MediaBrowser.Model/Drawing/DrawingUtils.cs b/MediaBrowser.Model/Drawing/DrawingUtils.cs
index fabe1b24c..8f66029fe 100644
--- a/MediaBrowser.Model/Drawing/DrawingUtils.cs
+++ b/MediaBrowser.Model/Drawing/DrawingUtils.cs
@@ -141,5 +141,10 @@ namespace MediaBrowser.Model.Drawing
/// </summary>
/// <value>The width.</value>
public double Width { get; set; }
+
+ public bool Equals(ImageSize size)
+ {
+ return Width.Equals(size.Width) && Height.Equals(size.Height);
+ }
}
}
diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs
index a439251db..4379c8fad 100644
--- a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs
+++ b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs
@@ -3,7 +3,6 @@ using MediaBrowser.Common.IO;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Drawing;
using MediaBrowser.Model.Entities;
@@ -85,6 +84,17 @@ namespace MediaBrowser.Server.Implementations.Drawing
}
var originalImagePath = options.OriginalImagePath;
+
+ if (options.HasDefaultOptions())
+ {
+ // Just spit out the original file if all the options are default
+ using (var fileStream = _fileSystem.GetFileStream(originalImagePath, FileMode.Open, FileAccess.Read, FileShare.Read, true))
+ {
+ await fileStream.CopyToAsync(toStream).ConfigureAwait(false);
+ return;
+ }
+ }
+
var dateModified = options.OriginalImageDateModified;
if (options.CropWhiteSpace)
@@ -106,6 +116,16 @@ namespace MediaBrowser.Server.Implementations.Drawing
// Determine the output size based on incoming parameters
var newSize = DrawingUtils.Resize(originalImageSize, options.Width, options.Height, options.MaxWidth, options.MaxHeight);
+ if (options.HasDefaultOptionsWithoutSize() && newSize.Equals(originalImageSize))
+ {
+ // Just spit out the original file the new size equals the old
+ using (var fileStream = _fileSystem.GetFileStream(originalImagePath, FileMode.Open, FileAccess.Read, FileShare.Read, true))
+ {
+ await fileStream.CopyToAsync(toStream).ConfigureAwait(false);
+ return;
+ }
+ }
+
var quality = options.Quality ?? 90;
var cacheFilePath = GetCacheFilePath(originalImagePath, newSize, quality, dateModified, options.OutputFormat, options.AddPlayedIndicator, options.PercentPlayed, options.BackgroundColor);