private ImageFormat GetOutputFormat(ImageRequest request, ItemImageInfo image, List <IImageEnhancer> enhancers) { if (!string.IsNullOrWhiteSpace(request.Format)) { ImageFormat format; if (Enum.TryParse(request.Format, true, out format)) { return(format); } } var serverFormats = _imageProcessor.GetSupportedImageOutputFormats(); var clientFormats = GetClientSupportedFormats(); if (serverFormats.Contains(ImageFormat.Webp) && clientFormats.Contains(ImageFormat.Webp)) { return(ImageFormat.Webp); } if (enhancers.Count > 0) { return(ImageFormat.Png); } if (string.Equals(Path.GetExtension(image.Path), ".jpg", StringComparison.OrdinalIgnoreCase) || string.Equals(Path.GetExtension(image.Path), ".jpeg", StringComparison.OrdinalIgnoreCase)) { return(ImageFormat.Jpg); } // We can't predict if there will be transparency or not, so play it safe return(ImageFormat.Png); }
private ImageFormat GetOutputFormat(ImageRequest request, ItemImageInfo image, bool cropwhitespace, List <IImageEnhancer> enhancers) { if (!string.IsNullOrWhiteSpace(request.Format)) { ImageFormat format; if (Enum.TryParse(request.Format, true, out format)) { return(format); } } var extension = Path.GetExtension(image.Path); ImageFormat?inputFormat = null; if (string.Equals(extension, ".jpg", StringComparison.OrdinalIgnoreCase) || string.Equals(extension, ".jpeg", StringComparison.OrdinalIgnoreCase)) { inputFormat = ImageFormat.Jpg; } else if (string.Equals(extension, ".png", StringComparison.OrdinalIgnoreCase)) { inputFormat = ImageFormat.Png; } var clientSupportedFormats = GetClientSupportedFormats(); if (inputFormat.HasValue && clientSupportedFormats.Contains(inputFormat.Value) && enhancers.Count == 0) { if ((request.Quality ?? 100) == 100 && !request.Height.HasValue && !request.Width.HasValue && !request.AddPlayedIndicator && !request.PercentPlayed.HasValue && !request.UnplayedCount.HasValue && string.IsNullOrWhiteSpace(request.BackgroundColor)) { // TODO: Allow this when specfying max width/height if the value is in range if (!cropwhitespace && !request.MaxHeight.HasValue && !request.MaxWidth.HasValue) { return(inputFormat.Value); } } } var serverFormats = _imageProcessor.GetSupportedImageOutputFormats(); // Client doesn't care about format, so start with webp if supported if (serverFormats.Contains(ImageFormat.Webp) && clientSupportedFormats.Contains(ImageFormat.Webp)) { return(ImageFormat.Webp); } if (enhancers.Count > 0) { return(ImageFormat.Png); } if (inputFormat.HasValue && inputFormat.Value == ImageFormat.Jpg) { return(ImageFormat.Jpg); } // We can't predict if there will be transparency or not, so play it safe return(ImageFormat.Png); }
private List <ImageFormat> GetOutputFormats(ImageRequest request, ItemImageInfo image, bool cropwhitespace, List <IImageEnhancer> enhancers) { if (!string.IsNullOrWhiteSpace(request.Format)) { ImageFormat format; if (Enum.TryParse(request.Format, true, out format)) { return(new List <ImageFormat> { format }); } } var extension = Path.GetExtension(image.Path); ImageFormat?inputFormat = null; if (string.Equals(extension, ".jpg", StringComparison.OrdinalIgnoreCase) || string.Equals(extension, ".jpeg", StringComparison.OrdinalIgnoreCase)) { inputFormat = ImageFormat.Jpg; } else if (string.Equals(extension, ".png", StringComparison.OrdinalIgnoreCase)) { inputFormat = ImageFormat.Png; } var clientSupportedFormats = GetClientSupportedFormats(); var serverFormats = _imageProcessor.GetSupportedImageOutputFormats(); var outputFormats = new List <ImageFormat>(); // Client doesn't care about format, so start with webp if supported if (serverFormats.Contains(ImageFormat.Webp) && clientSupportedFormats.Contains(ImageFormat.Webp)) { outputFormats.Add(ImageFormat.Webp); } if (enhancers.Count > 0) { outputFormats.Add(ImageFormat.Png); } if (inputFormat.HasValue && inputFormat.Value == ImageFormat.Jpg) { outputFormats.Add(ImageFormat.Jpg); } // We can't predict if there will be transparency or not, so play it safe outputFormats.Add(ImageFormat.Png); return(outputFormats); }