mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-11-16 02:18:54 -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 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>
|
||||
/// <value>The width.</value>
|
||||
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.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);
|
||||
|
Loading…
Reference in New Issue
Block a user