mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-10-31 10:37:22 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			127 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| #nullable disable
 | |
| 
 | |
| #pragma warning disable CS1591
 | |
| 
 | |
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.IO;
 | |
| using System.Linq;
 | |
| using MediaBrowser.Controller.Entities;
 | |
| using MediaBrowser.Model.Drawing;
 | |
| 
 | |
| namespace MediaBrowser.Controller.Drawing
 | |
| {
 | |
|     public class ImageProcessingOptions
 | |
|     {
 | |
|         public ImageProcessingOptions()
 | |
|         {
 | |
|             RequiresAutoOrientation = true;
 | |
|         }
 | |
| 
 | |
|         public Guid ItemId { get; set; }
 | |
| 
 | |
|         public BaseItem Item { get; set; }
 | |
| 
 | |
|         public ItemImageInfo Image { get; set; }
 | |
| 
 | |
|         public int ImageIndex { get; set; }
 | |
| 
 | |
|         public int? Width { get; set; }
 | |
| 
 | |
|         public int? Height { get; set; }
 | |
| 
 | |
|         public int? MaxWidth { get; set; }
 | |
| 
 | |
|         public int? MaxHeight { get; set; }
 | |
| 
 | |
|         public int? FillWidth { get; set; }
 | |
| 
 | |
|         public int? FillHeight { get; set; }
 | |
| 
 | |
|         public int Quality { get; set; }
 | |
| 
 | |
|         public IReadOnlyCollection<ImageFormat> SupportedOutputFormats { get; set; }
 | |
| 
 | |
|         public int? UnplayedCount { get; set; }
 | |
| 
 | |
|         public int? Blur { get; set; }
 | |
| 
 | |
|         public double PercentPlayed { get; set; }
 | |
| 
 | |
|         public string BackgroundColor { get; set; }
 | |
| 
 | |
|         public string ForegroundLayer { get; set; }
 | |
| 
 | |
|         public bool RequiresAutoOrientation { get; set; }
 | |
| 
 | |
|         private bool HasDefaultOptions(string originalImagePath)
 | |
|         {
 | |
|             return HasDefaultOptionsWithoutSize(originalImagePath) &&
 | |
|                 !Width.HasValue &&
 | |
|                 !Height.HasValue &&
 | |
|                 !MaxWidth.HasValue &&
 | |
|                 !MaxHeight.HasValue;
 | |
|         }
 | |
| 
 | |
|         public bool HasDefaultOptions(string originalImagePath, ImageDimensions? size)
 | |
|         {
 | |
|             if (!size.HasValue)
 | |
|             {
 | |
|                 return HasDefaultOptions(originalImagePath);
 | |
|             }
 | |
| 
 | |
|             if (!HasDefaultOptionsWithoutSize(originalImagePath))
 | |
|             {
 | |
|                 return false;
 | |
|             }
 | |
| 
 | |
|             var sizeValue = size.Value;
 | |
| 
 | |
|             if (Width.HasValue && !sizeValue.Width.Equals(Width.Value))
 | |
|             {
 | |
|                 return false;
 | |
|             }
 | |
| 
 | |
|             if (Height.HasValue && !sizeValue.Height.Equals(Height.Value))
 | |
|             {
 | |
|                 return false;
 | |
|             }
 | |
| 
 | |
|             if (MaxWidth.HasValue && sizeValue.Width > MaxWidth.Value)
 | |
|             {
 | |
|                 return false;
 | |
|             }
 | |
| 
 | |
|             if (MaxHeight.HasValue && sizeValue.Height > MaxHeight.Value)
 | |
|             {
 | |
|                 return false;
 | |
|             }
 | |
| 
 | |
|             if (sizeValue.Width > FillWidth || sizeValue.Height > FillHeight)
 | |
|             {
 | |
|                 return false;
 | |
|             }
 | |
| 
 | |
|             return true;
 | |
|         }
 | |
| 
 | |
|         private bool HasDefaultOptionsWithoutSize(string originalImagePath)
 | |
|         {
 | |
|             return (Quality >= 90) &&
 | |
|                 IsFormatSupported(originalImagePath) &&
 | |
|                 PercentPlayed.Equals(0) &&
 | |
|                 !UnplayedCount.HasValue &&
 | |
|                 !Blur.HasValue &&
 | |
|                 string.IsNullOrEmpty(BackgroundColor) &&
 | |
|                 string.IsNullOrEmpty(ForegroundLayer);
 | |
|         }
 | |
| 
 | |
|         private bool IsFormatSupported(string originalImagePath)
 | |
|         {
 | |
|             var ext = Path.GetExtension(originalImagePath);
 | |
|             ext = ext.Replace(".jpeg", ".jpg", StringComparison.OrdinalIgnoreCase);
 | |
|             return SupportedOutputFormats.Any(outputFormat => string.Equals(ext, outputFormat.GetExtension(), StringComparison.OrdinalIgnoreCase));
 | |
|         }
 | |
|     }
 | |
| }
 |