123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #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));
- }
- }
- }
|