mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-10-31 10:37:22 -04:00 
			
		
		
		
	Remove GetSizeEstimate & GetEstimatedAspectRatio
from MediaBrowser.Controller.Drawing.ImageHelper Rework GetCacheFilePath to take requested with and height parameters in stead of using estimated output size
This commit is contained in:
		
							parent
							
								
									13d0837b78
								
							
						
					
					
						commit
						e57c1655fb
					
				| @ -171,11 +171,26 @@ namespace Emby.Drawing | ||||
|                 return (originalImagePath, MimeTypes.GetMimeType(originalImagePath), dateModified); | ||||
|             } | ||||
| 
 | ||||
|             ImageDimensions newSize = ImageHelper.GetNewImageSize(options, null); | ||||
|             int quality = options.Quality; | ||||
| 
 | ||||
|             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 | ||||
|             { | ||||
| @ -241,48 +256,111 @@ namespace Emby.Drawing | ||||
|         /// <summary> | ||||
|         /// Gets the cache file path based on a set of parameters. | ||||
|         /// </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 | ||||
|                 + "width=" + outputSize.Width | ||||
|                 + "height=" + outputSize.Height | ||||
|                 + "quality=" + quality | ||||
|                 + "datemodified=" + dateModified.Ticks | ||||
|                 + "f=" + format; | ||||
|             System.Text.StringBuilder filename = new System.Text.StringBuilder(128); | ||||
|             filename.Append(originalPath); | ||||
| 
 | ||||
|             filename.Append(",quality="); | ||||
|             filename.Append(quality); | ||||
| 
 | ||||
|             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) | ||||
|             { | ||||
|                 filename += "pl=true"; | ||||
|                 filename.Append(",pl=true"); | ||||
|             } | ||||
| 
 | ||||
|             if (percentPlayed > 0) | ||||
|             { | ||||
|                 filename += "p=" + percentPlayed; | ||||
|                 filename.Append(",p="); | ||||
|                 filename.Append(percentPlayed); | ||||
|             } | ||||
| 
 | ||||
|             if (unwatchedCount.HasValue) | ||||
|             { | ||||
|                 filename += "p=" + unwatchedCount.Value; | ||||
|                 filename.Append(",p="); | ||||
|                 filename.Append(unwatchedCount.Value); | ||||
|             } | ||||
| 
 | ||||
|             if (blur.HasValue) | ||||
|             { | ||||
|                 filename += "blur=" + blur.Value; | ||||
|                 filename.Append(",blur="); | ||||
|                 filename.Append(blur.Value); | ||||
|             } | ||||
| 
 | ||||
|             if (!string.IsNullOrEmpty(backgroundColor)) | ||||
|             { | ||||
|                 filename += "b=" + backgroundColor; | ||||
|                 filename.Append(",b="); | ||||
|                 filename.Append(backgroundColor); | ||||
|             } | ||||
| 
 | ||||
|             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 /> | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| #pragma warning disable CS1591 | ||||
| #nullable enable | ||||
| 
 | ||||
| using System; | ||||
| using MediaBrowser.Controller.Entities; | ||||
| @ -9,67 +10,12 @@ namespace MediaBrowser.Controller.Drawing | ||||
| { | ||||
|     public static class ImageHelper | ||||
|     { | ||||
|         public static ImageDimensions GetNewImageSize(ImageProcessingOptions options, ImageDimensions? originalImageSize) | ||||
|         public static ImageDimensions GetNewImageSize(ImageProcessingOptions options, ImageDimensions originalImageSize) | ||||
|         { | ||||
|             if (originalImageSize.HasValue) | ||||
|             { | ||||
|                 // Determine the output size based on incoming parameters | ||||
|                 var newSize = DrawingUtils.Resize(originalImageSize.Value, options.Width ?? 0, options.Height ?? 0, options.MaxWidth ?? 0, options.MaxHeight ?? 0); | ||||
|                 newSize = DrawingUtils.ResizeFill(newSize, options.FillWidth, options.FillHeight); | ||||
|                 return newSize; | ||||
|             } | ||||
| 
 | ||||
|             return GetSizeEstimate(options); | ||||
|         } | ||||
| 
 | ||||
|         private static ImageDimensions GetSizeEstimate(ImageProcessingOptions options) | ||||
|         { | ||||
|             if (options.Width.HasValue && options.Height.HasValue) | ||||
|             { | ||||
|                 return new ImageDimensions(options.Width.Value, options.Height.Value); | ||||
|             } | ||||
| 
 | ||||
|             double aspect = GetEstimatedAspectRatio(options.Image.Type, options.Item); | ||||
| 
 | ||||
|             int? width = options.Width ?? options.MaxWidth; | ||||
| 
 | ||||
|             if (width.HasValue) | ||||
|             { | ||||
|                 int heightValue = Convert.ToInt32((double)width.Value / aspect); | ||||
|                 return new ImageDimensions(width.Value, heightValue); | ||||
|             } | ||||
| 
 | ||||
|             var height = options.Height ?? options.MaxHeight ?? 200; | ||||
|             int widthValue = Convert.ToInt32(aspect * height); | ||||
|             return new ImageDimensions(widthValue, height); | ||||
|         } | ||||
| 
 | ||||
|         private static double GetEstimatedAspectRatio(ImageType type, BaseItem item) | ||||
|         { | ||||
|             switch (type) | ||||
|             { | ||||
|                 case ImageType.Art: | ||||
|                 case ImageType.Backdrop: | ||||
|                 case ImageType.Chapter: | ||||
|                 case ImageType.Screenshot: | ||||
|                 case ImageType.Thumb: | ||||
|                     return 1.78; | ||||
|                 case ImageType.Banner: | ||||
|                     return 5.4; | ||||
|                 case ImageType.Box: | ||||
|                 case ImageType.BoxRear: | ||||
|                 case ImageType.Disc: | ||||
|                 case ImageType.Menu: | ||||
|                 case ImageType.Profile: | ||||
|                     return 1; | ||||
|                 case ImageType.Logo: | ||||
|                     return 2.58; | ||||
|                 case ImageType.Primary: | ||||
|                     double defaultPrimaryImageAspectRatio = item.GetDefaultPrimaryImageAspectRatio(); | ||||
|                     return defaultPrimaryImageAspectRatio > 0 ? defaultPrimaryImageAspectRatio : 2.0 / 3; | ||||
|                 default: | ||||
|                     return 1; | ||||
|             } | ||||
|             // Determine the output size based on incoming parameters | ||||
|             var newSize = DrawingUtils.Resize(originalImageSize, options.Width ?? 0, options.Height ?? 0, options.MaxWidth ?? 0, options.MaxHeight ?? 0); | ||||
|             newSize = DrawingUtils.ResizeFill(newSize, options.FillWidth, options.FillHeight); | ||||
|             return newSize; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user