@ -171,11 +171,26 @@ namespace Emby.Drawing
return ( originalImagePath , MimeTypes . GetMimeType ( originalImagePath ) , dateModified ) ;
return ( originalImagePath , MimeTypes . GetMimeType ( originalImagePath ) , dateModified ) ;
}
}
ImageDimensions newSize = ImageHelper . GetNewImageSize ( options , null ) ;
int quality = options . Quality ;
int quality = options . Quality ;
ImageFormat outputFormat = GetOutputFormat ( options . SupportedOutputFormats , requiresTransparency ) ;
ImageFormat outputFormat = GetOutputFormat ( options . SupportedOutputFormats , requiresTransparency ) ;
string cacheFilePath = GetCacheFilePath ( originalImagePath , newSize , quality , dateModified , outputFormat , options . AddPlayedIndicator , options . PercentPlayed , options . UnplayedCount , options . Blur , options . BackgroundColor , options . ForegroundLayer ) ;
string cacheFilePath = GetCacheFilePath (
originalImagePath ,
options . Width ,
options . Height ,
options . MaxWidth ,
options . MaxHeight ,
options . FillWidth ,
options . FillHeight ,
quality ,
dateModified ,
outputFormat ,
options . AddPlayedIndicator ,
options . PercentPlayed ,
options . UnplayedCount ,
options . Blur ,
options . BackgroundColor ,
options . ForegroundLayer ) ;
try
try
{
{
@ -241,48 +256,111 @@ namespace Emby.Drawing
/// <summary>
/// <summary>
/// Gets the cache file path based on a set of parameters.
/// Gets the cache file path based on a set of parameters.
/// </summary>
/// </summary>
private string GetCacheFilePath ( string originalPath , ImageDimensions outputSize , int quality , DateTime dateModified , ImageFormat format , bool addPlayedIndicator , double percentPlayed , int? unwatchedCount , int? blur , string backgroundColor , string foregroundLayer )
private string GetCacheFilePath (
string originalPath ,
int? width ,
int? height ,
int? maxWidth ,
int? maxHeight ,
int? fillWidth ,
int? fillHeight ,
int quality ,
DateTime dateModified ,
ImageFormat format ,
bool addPlayedIndicator ,
double percentPlayed ,
int? unwatchedCount ,
int? blur ,
string backgroundColor ,
string foregroundLayer )
{
{
var filename = originalPath
System . Text . StringBuilder filename = new System . Text . StringBuilder ( 128 ) ;
+ "width=" + outputSize . Width
filename . Append ( originalPath ) ;
+ "height=" + outputSize . Height
+ "quality=" + quality
filename . Append ( ",quality=" ) ;
+ "datemodified=" + dateModified . Ticks
filename . Append ( quality ) ;
+ "f=" + format ;
filename . Append ( ",datemodified=" ) ;
filename . Append ( dateModified . Ticks ) ;
filename . Append ( ",f=" ) ;
filename . Append ( format ) ;
if ( width . HasValue )
{
filename . Append ( ",width=" ) ;
filename . Append ( width . Value ) ;
}
if ( height . HasValue )
{
filename . Append ( ",height=" ) ;
filename . Append ( height . Value ) ;
}
if ( maxWidth . HasValue )
{
filename . Append ( ",maxwidth=" ) ;
filename . Append ( maxWidth . Value ) ;
}
if ( maxHeight . HasValue )
{
filename . Append ( ",maxheight=" ) ;
filename . Append ( maxHeight . Value ) ;
}
if ( fillWidth . HasValue )
{
filename . Append ( ",fillwidth=" ) ;
filename . Append ( fillWidth . Value ) ;
}
if ( fillHeight . HasValue )
{
filename . Append ( ",fillheight=" ) ;
filename . Append ( fillHeight . Value ) ;
}
if ( addPlayedIndicator )
if ( addPlayedIndicator )
{
{
filename + = "pl=true" ;
filename . Append ( ",pl=true" ) ;
}
}
if ( percentPlayed > 0 )
if ( percentPlayed > 0 )
{
{
filename + = "p=" + percentPlayed ;
filename . Append ( ",p=" ) ;
filename . Append ( percentPlayed ) ;
}
}
if ( unwatchedCount . HasValue )
if ( unwatchedCount . HasValue )
{
{
filename + = "p=" + unwatchedCount . Value ;
filename . Append ( ",p=" ) ;
filename . Append ( unwatchedCount . Value ) ;
}
}
if ( blur . HasValue )
if ( blur . HasValue )
{
{
filename + = "blur=" + blur . Value ;
filename . Append ( ",blur=" ) ;
filename . Append ( blur . Value ) ;
}
}
if ( ! string . IsNullOrEmpty ( backgroundColor ) )
if ( ! string . IsNullOrEmpty ( backgroundColor ) )
{
{
filename + = "b=" + backgroundColor ;
filename . Append ( ",b=" ) ;
filename . Append ( backgroundColor ) ;
}
}
if ( ! string . IsNullOrEmpty ( foregroundLayer ) )
if ( ! string . IsNullOrEmpty ( foregroundLayer ) )
{
{
filename + = "fl=" + foregroundLayer ;
filename . Append ( ",fl=" ) ;
filename . Append ( foregroundLayer ) ;
}
}
filename + = "v=" + Version ;
filename . Append ( ",v=" ) ;
filename . Append ( Version ) ;
return GetCachePath ( ResizedImageCachePath , filename , "." + format . ToString ( ) . ToLowerInvariant ( ) ) ;
return GetCachePath ( ResizedImageCachePath , filename .ToString ( ) , "." + format . ToString ( ) . ToLowerInvariant ( ) ) ;
}
}
/// <inheritdoc />
/// <inheritdoc />