diff options
| author | Luke <luke.pulverenti@gmail.com> | 2015-05-12 10:55:26 -0400 |
|---|---|---|
| committer | Luke <luke.pulverenti@gmail.com> | 2015-05-12 10:55:26 -0400 |
| commit | 033919685a56fb9cf2c0612e1d320bc2987f7291 (patch) | |
| tree | d53751b885ab8f88bf18d2370026908753cd5a82 /Emby.Drawing | |
| parent | 46b26863d032643268375525170e67618d959464 (diff) | |
| parent | 0f4a5ca9e6682e5f00bc54172b8083d42cbcd266 (diff) | |
Merge pull request #1100 from MediaBrowser/dev
3.0.5607.2
Diffstat (limited to 'Emby.Drawing')
| -rw-r--r-- | Emby.Drawing/Emby.Drawing.csproj | 1 | ||||
| -rw-r--r-- | Emby.Drawing/GDI/DynamicImageHelpers.cs | 14 | ||||
| -rw-r--r-- | Emby.Drawing/GDI/GDIImageEncoder.cs | 2 | ||||
| -rw-r--r-- | Emby.Drawing/ImageHelpers.cs | 43 | ||||
| -rw-r--r-- | Emby.Drawing/ImageMagick/ImageMagickEncoder.cs | 9 | ||||
| -rw-r--r-- | Emby.Drawing/ImageMagick/StripCollageBuilder.cs | 64 | ||||
| -rw-r--r-- | Emby.Drawing/ImageProcessor.cs | 4 |
7 files changed, 82 insertions, 55 deletions
diff --git a/Emby.Drawing/Emby.Drawing.csproj b/Emby.Drawing/Emby.Drawing.csproj index b286885a5..8aba4263c 100644 --- a/Emby.Drawing/Emby.Drawing.csproj +++ b/Emby.Drawing/Emby.Drawing.csproj @@ -57,6 +57,7 @@ <Compile Include="GDI\UnplayedCountIndicator.cs" /> <Compile Include="IImageEncoder.cs" /> <Compile Include="Common\ImageHeader.cs" /> + <Compile Include="ImageHelpers.cs" /> <Compile Include="ImageMagick\ImageMagickEncoder.cs" /> <Compile Include="ImageMagick\StripCollageBuilder.cs" /> <Compile Include="ImageProcessor.cs" /> diff --git a/Emby.Drawing/GDI/DynamicImageHelpers.cs b/Emby.Drawing/GDI/DynamicImageHelpers.cs index c49007c5f..b4a63b31e 100644 --- a/Emby.Drawing/GDI/DynamicImageHelpers.cs +++ b/Emby.Drawing/GDI/DynamicImageHelpers.cs @@ -1,11 +1,9 @@ -using Emby.Drawing.ImageMagick; -using MediaBrowser.Common.IO; +using MediaBrowser.Common.IO; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO; -using System.Linq; namespace Emby.Drawing.GDI { @@ -18,10 +16,10 @@ namespace Emby.Drawing.GDI int height) { const int numStrips = 4; - files = StripCollageBuilder.ProjectPaths(files, numStrips).ToList(); - + files = ImageHelpers.ProjectPaths(files, numStrips); + const int rows = 1; - int cols = numStrips; + int cols = numStrips; int cellWidth = 2 * (width / 3); int cellHeight = height; @@ -76,8 +74,8 @@ namespace Emby.Drawing.GDI int width, int height) { - files = StripCollageBuilder.ProjectPaths(files, 4).ToList(); - + files = ImageHelpers.ProjectPaths(files, 4); + const int rows = 2; const int cols = 2; diff --git a/Emby.Drawing/GDI/GDIImageEncoder.cs b/Emby.Drawing/GDI/GDIImageEncoder.cs index d968b8b5f..7e3ca530b 100644 --- a/Emby.Drawing/GDI/GDIImageEncoder.cs +++ b/Emby.Drawing/GDI/GDIImageEncoder.cs @@ -21,6 +21,8 @@ namespace Emby.Drawing.GDI { _fileSystem = fileSystem; _logger = logger; + + _logger.Info("GDI image processor initialized"); } public string[] SupportedInputFormats diff --git a/Emby.Drawing/ImageHelpers.cs b/Emby.Drawing/ImageHelpers.cs new file mode 100644 index 000000000..90bde8b3b --- /dev/null +++ b/Emby.Drawing/ImageHelpers.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Emby.Drawing +{ + internal static class ImageHelpers + { + internal static List<string> ProjectPaths(List<string> paths, int count) + { + if (count <= 0) + { + throw new ArgumentOutOfRangeException("count"); + } + if (paths.Count == 0) + { + throw new ArgumentOutOfRangeException("paths"); + } + + var list = new List<string>(); + + AddToList(list, paths, count); + + return list.Take(count).ToList(); + } + + private static void AddToList(List<string> list, List<string> paths, int count) + { + while (list.Count < count) + { + foreach (var path in paths) + { + list.Add(path); + + if (list.Count >= count) + { + return; + } + } + } + } + } +} diff --git a/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs b/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs index 380c56059..ff4a8f55b 100644 --- a/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs +++ b/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs @@ -1,4 +1,5 @@ -using ImageMagickSharp; +using System.Linq; +using ImageMagickSharp; using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Drawing; using MediaBrowser.Model.Drawing; @@ -195,15 +196,15 @@ namespace Emby.Drawing.ImageMagick if (ratio >= 1.4) { - new StripCollageBuilder(_appPaths).BuildThumbCollage(options.InputPaths, options.OutputPath, options.Width, options.Height, options.Text); + new StripCollageBuilder(_appPaths).BuildThumbCollage(options.InputPaths.ToList(), options.OutputPath, options.Width, options.Height, options.Text); } else if (ratio >= .9) { - new StripCollageBuilder(_appPaths).BuildSquareCollage(options.InputPaths, options.OutputPath, options.Width, options.Height, options.Text); + new StripCollageBuilder(_appPaths).BuildSquareCollage(options.InputPaths.ToList(), options.OutputPath, options.Width, options.Height, options.Text); } else { - new StripCollageBuilder(_appPaths).BuildPosterCollage(options.InputPaths, options.OutputPath, options.Width, options.Height, options.Text); + new StripCollageBuilder(_appPaths).BuildPosterCollage(options.InputPaths.ToList(), options.OutputPath, options.Width, options.Height, options.Text); } } diff --git a/Emby.Drawing/ImageMagick/StripCollageBuilder.cs b/Emby.Drawing/ImageMagick/StripCollageBuilder.cs index 7cdd0077d..a50a75ccd 100644 --- a/Emby.Drawing/ImageMagick/StripCollageBuilder.cs +++ b/Emby.Drawing/ImageMagick/StripCollageBuilder.cs @@ -2,7 +2,6 @@ using MediaBrowser.Common.Configuration; using System; using System.Collections.Generic; -using System.Linq; namespace Emby.Drawing.ImageMagick { @@ -15,7 +14,7 @@ namespace Emby.Drawing.ImageMagick _appPaths = appPaths; } - public void BuildPosterCollage(IEnumerable<string> paths, string outputPath, int width, int height, string text) + public void BuildPosterCollage(List<string> paths, string outputPath, int width, int height, string text) { if (!string.IsNullOrWhiteSpace(text)) { @@ -33,7 +32,7 @@ namespace Emby.Drawing.ImageMagick } } - public void BuildSquareCollage(IEnumerable<string> paths, string outputPath, int width, int height, string text) + public void BuildSquareCollage(List<string> paths, string outputPath, int width, int height, string text) { if (!string.IsNullOrWhiteSpace(text)) { @@ -51,7 +50,7 @@ namespace Emby.Drawing.ImageMagick } } - public void BuildThumbCollage(IEnumerable<string> paths, string outputPath, int width, int height, string text) + public void BuildThumbCollage(List<string> paths, string outputPath, int width, int height, string text) { if (!string.IsNullOrWhiteSpace(text)) { @@ -69,31 +68,10 @@ namespace Emby.Drawing.ImageMagick } } - internal static string[] ProjectPaths(IEnumerable<string> paths, int count) + private MagickWand BuildThumbCollageWandWithText(List<string> paths, string text, int width, int height) { - var clone = paths.ToList(); - var list = new List<string>(); - - while (list.Count < count) - { - foreach (var path in clone) - { - list.Add(path); - - if (list.Count >= count) - { - break; - } - } - } - - return list.Take(count).ToArray(); - } - - private MagickWand BuildThumbCollageWandWithText(IEnumerable<string> paths, string text, int width, int height) - { - var inputPaths = ProjectPaths(paths, 8); - using (var wandImages = new MagickWand(inputPaths)) + var inputPaths = ImageHelpers.ProjectPaths(paths, 8); + using (var wandImages = new MagickWand(inputPaths.ToArray())) { var wand = new MagickWand(width, height); wand.OpenImage("gradient:#111111-#111111"); @@ -165,10 +143,10 @@ namespace Emby.Drawing.ImageMagick } } - private MagickWand BuildPosterCollageWand(IEnumerable<string> paths, int width, int height) + private MagickWand BuildPosterCollageWand(List<string> paths, int width, int height) { - var inputPaths = ProjectPaths(paths, 4); - using (var wandImages = new MagickWand(inputPaths)) + var inputPaths = ImageHelpers.ProjectPaths(paths, 4); + using (var wandImages = new MagickWand(inputPaths.ToArray())) { var wand = new MagickWand(width, height); wand.OpenImage("gradient:#111111-#111111"); @@ -230,10 +208,10 @@ namespace Emby.Drawing.ImageMagick } } - private MagickWand BuildPosterCollageWandWithText(IEnumerable<string> paths, string label, int width, int height) + private MagickWand BuildPosterCollageWandWithText(List<string> paths, string label, int width, int height) { - var inputPaths = ProjectPaths(paths, 4); - using (var wandImages = new MagickWand(inputPaths)) + var inputPaths = ImageHelpers.ProjectPaths(paths, 4); + using (var wandImages = new MagickWand(inputPaths.ToArray())) { var wand = new MagickWand(width, height); wand.OpenImage("gradient:#111111-#111111"); @@ -305,10 +283,10 @@ namespace Emby.Drawing.ImageMagick } } - private MagickWand BuildThumbCollageWand(IEnumerable<string> paths, int width, int height) + private MagickWand BuildThumbCollageWand(List<string> paths, int width, int height) { - var inputPaths = ProjectPaths(paths, 8); - using (var wandImages = new MagickWand(inputPaths)) + var inputPaths = ImageHelpers.ProjectPaths(paths, 8); + using (var wandImages = new MagickWand(inputPaths.ToArray())) { var wand = new MagickWand(width, height); wand.OpenImage("gradient:#111111-#111111"); @@ -370,10 +348,10 @@ namespace Emby.Drawing.ImageMagick } } - private MagickWand BuildSquareCollageWand(IEnumerable<string> paths, int width, int height) + private MagickWand BuildSquareCollageWand(List<string> paths, int width, int height) { - var inputPaths = ProjectPaths(paths, 4); - using (var wandImages = new MagickWand(inputPaths)) + var inputPaths = ImageHelpers.ProjectPaths(paths, 4); + using (var wandImages = new MagickWand(inputPaths.ToArray())) { var wand = new MagickWand(width, height); wand.OpenImage("gradient:#111111-#111111"); @@ -435,10 +413,10 @@ namespace Emby.Drawing.ImageMagick } } - private MagickWand BuildSquareCollageWandWithText(IEnumerable<string> paths, string label, int width, int height) + private MagickWand BuildSquareCollageWandWithText(List<string> paths, string label, int width, int height) { - var inputPaths = ProjectPaths(paths, 4); - using (var wandImages = new MagickWand(inputPaths)) + var inputPaths = ImageHelpers.ProjectPaths(paths, 4); + using (var wandImages = new MagickWand(inputPaths.ToArray())) { var wand = new MagickWand(width, height); wand.OpenImage("gradient:#111111-#111111"); diff --git a/Emby.Drawing/ImageProcessor.cs b/Emby.Drawing/ImageProcessor.cs index 59c2e95c7..2ba4f5aab 100644 --- a/Emby.Drawing/ImageProcessor.cs +++ b/Emby.Drawing/ImageProcessor.cs @@ -764,7 +764,11 @@ namespace Emby.Drawing try { + _logger.Debug("Creating image collage and saving to {0}", options.OutputPath); + _imageEncoder.CreateImageCollage(options); + + _logger.Debug("Completed creation of image collage and saved to {0}", options.OutputPath); } finally { |
