mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
#pragma warning disable CS1591
 | 
						|
 | 
						|
using System;
 | 
						|
using MediaBrowser.Controller.Entities;
 | 
						|
using MediaBrowser.Model.Drawing;
 | 
						|
using MediaBrowser.Model.Entities;
 | 
						|
 | 
						|
namespace MediaBrowser.Controller.Drawing
 | 
						|
{
 | 
						|
    public static class ImageHelper
 | 
						|
    {
 | 
						|
        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);
 | 
						|
 | 
						|
                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;
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |