mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-04 03:27:21 -05: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));
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |