mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-11-16 10:29:01 -07:00
Serve original image file when possible
This commit is contained in:
parent
221b60b662
commit
a2cd03610f
@ -40,5 +40,37 @@ namespace MediaBrowser.Controller.Drawing
|
|||||||
public int? PercentPlayed { get; set; }
|
public int? PercentPlayed { get; set; }
|
||||||
|
|
||||||
public string BackgroundColor { 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -141,5 +141,10 @@ namespace MediaBrowser.Model.Drawing
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The width.</value>
|
/// <value>The width.</value>
|
||||||
public double Width { get; set; }
|
public double Width { get; set; }
|
||||||
|
|
||||||
|
public bool Equals(ImageSize size)
|
||||||
|
{
|
||||||
|
return Width.Equals(size.Width) && Height.Equals(size.Height);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ using MediaBrowser.Common.IO;
|
|||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Drawing;
|
using MediaBrowser.Controller.Drawing;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.IO;
|
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Drawing;
|
using MediaBrowser.Model.Drawing;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
@ -85,6 +84,17 @@ namespace MediaBrowser.Server.Implementations.Drawing
|
|||||||
}
|
}
|
||||||
|
|
||||||
var originalImagePath = options.OriginalImagePath;
|
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;
|
var dateModified = options.OriginalImageDateModified;
|
||||||
|
|
||||||
if (options.CropWhiteSpace)
|
if (options.CropWhiteSpace)
|
||||||
@ -106,6 +116,16 @@ namespace MediaBrowser.Server.Implementations.Drawing
|
|||||||
// Determine the output size based on incoming parameters
|
// Determine the output size based on incoming parameters
|
||||||
var newSize = DrawingUtils.Resize(originalImageSize, options.Width, options.Height, options.MaxWidth, options.MaxHeight);
|
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 quality = options.Quality ?? 90;
|
||||||
|
|
||||||
var cacheFilePath = GetCacheFilePath(originalImagePath, newSize, quality, dateModified, options.OutputFormat, options.AddPlayedIndicator, options.PercentPlayed, options.BackgroundColor);
|
var cacheFilePath = GetCacheFilePath(originalImagePath, newSize, quality, dateModified, options.OutputFormat, options.AddPlayedIndicator, options.PercentPlayed, options.BackgroundColor);
|
||||||
|
Loading…
Reference in New Issue
Block a user