diff options
| author | Luke <luke.pulverenti@gmail.com> | 2017-08-13 16:21:10 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-08-13 16:21:10 -0400 |
| commit | dc578f3742b474bd85d556299a6b2763f4d9acda (patch) | |
| tree | cc4a8d1de140ece77160349e51a64857656ab373 /Emby.Drawing/ImageProcessor.cs | |
| parent | f6ed934a7e32bf10c3a141773d713bf3b19e784f (diff) | |
| parent | 7f200f057d33e3ef52b1b1b1bf1767577295317e (diff) | |
Merge pull request #2815 from MediaBrowser/beta
Beta
Diffstat (limited to 'Emby.Drawing/ImageProcessor.cs')
| -rw-r--r-- | Emby.Drawing/ImageProcessor.cs | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/Emby.Drawing/ImageProcessor.cs b/Emby.Drawing/ImageProcessor.cs index be45912235..bd23eba7aa 100644 --- a/Emby.Drawing/ImageProcessor.cs +++ b/Emby.Drawing/ImageProcessor.cs @@ -17,12 +17,10 @@ using System.Threading; using System.Threading.Tasks; using MediaBrowser.Model.IO; using Emby.Drawing.Common; - -using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Net; using MediaBrowser.Model.Threading; -using TagLib; +using MediaBrowser.Model.Extensions; namespace Emby.Drawing { @@ -171,6 +169,13 @@ namespace Emby.Drawing return _imageEncoder.SupportedOutputFormats; } + private static readonly string[] TransparentImageTypes = new string[] { ".png", ".webp" }; + private bool SupportsTransparency(string path) + { + return TransparentImageTypes.Contains(Path.GetExtension(path) ?? string.Empty); + ; + } + public async Task<Tuple<string, string, DateTime>> ProcessImage(ImageProcessingOptions options) { if (options == null) @@ -179,7 +184,7 @@ namespace Emby.Drawing } var originalImage = options.Image; - IHasImages item = options.Item; + IHasMetadata item = options.Item; if (!originalImage.IsLocalFile) { @@ -260,6 +265,11 @@ namespace Emby.Drawing item = _libraryManager().GetItemById(options.ItemId); } + if (options.CropWhiteSpace && !SupportsTransparency(originalImagePath)) + { + options.CropWhiteSpace = false; + } + var resultPath = _imageEncoder.EncodeImage(originalImagePath, dateModified, tmpPath, autoOrient, orientation, quality, options, outputFormat); if (string.Equals(resultPath, originalImagePath, StringComparison.OrdinalIgnoreCase)) @@ -594,7 +604,7 @@ namespace Emby.Drawing /// <param name="image">The image.</param> /// <returns>Guid.</returns> /// <exception cref="System.ArgumentNullException">item</exception> - public string GetImageCacheTag(IHasImages item, ItemImageInfo image) + public string GetImageCacheTag(IHasMetadata item, ItemImageInfo image) { if (item == null) { @@ -619,7 +629,7 @@ namespace Emby.Drawing /// <param name="imageEnhancers">The image enhancers.</param> /// <returns>Guid.</returns> /// <exception cref="System.ArgumentNullException">item</exception> - public string GetImageCacheTag(IHasImages item, ItemImageInfo image, List<IImageEnhancer> imageEnhancers) + public string GetImageCacheTag(IHasMetadata item, ItemImageInfo image, List<IImageEnhancer> imageEnhancers) { if (item == null) { @@ -650,7 +660,7 @@ namespace Emby.Drawing var cacheKeys = imageEnhancers.Select(i => i.GetConfigurationCacheKey(item, imageType)).ToList(); cacheKeys.Add(originalImagePath + dateModified.Ticks); - return string.Join("|", cacheKeys.ToArray()).GetMD5().ToString("N"); + return string.Join("|", cacheKeys.ToArray(cacheKeys.Count)).GetMD5().ToString("N"); } /// <summary> @@ -660,7 +670,7 @@ namespace Emby.Drawing /// <param name="imageType">Type of the image.</param> /// <param name="imageIndex">Index of the image.</param> /// <returns>Task{System.String}.</returns> - public async Task<string> GetEnhancedImage(IHasImages item, ImageType imageType, int imageIndex) + public async Task<string> GetEnhancedImage(IHasMetadata item, ImageType imageType, int imageIndex) { var enhancers = GetSupportedEnhancers(item, imageType).ToList(); @@ -672,7 +682,7 @@ namespace Emby.Drawing } private async Task<Tuple<string, DateTime>> GetEnhancedImage(ItemImageInfo image, - IHasImages item, + IHasMetadata item, int imageIndex, List<IImageEnhancer> enhancers) { @@ -717,7 +727,7 @@ namespace Emby.Drawing /// item /// </exception> private async Task<string> GetEnhancedImageInternal(string originalImagePath, - IHasImages item, + IHasMetadata item, ImageType imageType, int imageIndex, IEnumerable<IImageEnhancer> supportedEnhancers, @@ -771,7 +781,7 @@ namespace Emby.Drawing /// <param name="imageType">Type of the image.</param> /// <param name="imageIndex">Index of the image.</param> /// <returns>Task{EnhancedImage}.</returns> - private async Task ExecuteImageEnhancers(IEnumerable<IImageEnhancer> imageEnhancers, string inputPath, string outputPath, IHasImages item, ImageType imageType, int imageIndex) + private async Task ExecuteImageEnhancers(IEnumerable<IImageEnhancer> imageEnhancers, string inputPath, string outputPath, IHasMetadata item, ImageType imageType, int imageIndex) { // Run the enhancers sequentially in order of priority foreach (var enhancer in imageEnhancers) @@ -856,7 +866,7 @@ namespace Emby.Drawing _logger.Info("Completed creation of image collage and saved to {0}", options.OutputPath); } - public IEnumerable<IImageEnhancer> GetSupportedEnhancers(IHasImages item, ImageType imageType) + public IEnumerable<IImageEnhancer> GetSupportedEnhancers(IHasMetadata item, ImageType imageType) { return ImageEnhancers.Where(i => { |
