diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-19 13:45:48 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-19 13:45:48 -0400 |
| commit | c233f2190c8d71508b5de40c18ad21d245a10de4 (patch) | |
| tree | c4e552631bcfff04bf9fa065117cc08d3242fb75 /MediaBrowser.Server.Implementations | |
| parent | 9e91e3b2dde25c466a82a53c2f83beae69dbc7b9 (diff) | |
fixes #518 - Add api param for watched indicator on images
Diffstat (limited to 'MediaBrowser.Server.Implementations')
3 files changed, 58 insertions, 8 deletions
diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs index 07a944e40..ff532b9dd 100644 --- a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs +++ b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs @@ -109,7 +109,7 @@ namespace MediaBrowser.Server.Implementations.Drawing var quality = options.Quality ?? 90; - var cacheFilePath = GetCacheFilePath(originalImagePath, newSize, quality, dateModified, options.OutputFormat); + var cacheFilePath = GetCacheFilePath(originalImagePath, newSize, quality, dateModified, options.OutputFormat, options.Indicator); try { @@ -175,6 +175,8 @@ namespace MediaBrowser.Server.Implementations.Drawing thumbnailGraph.DrawImage(originalImage, 0, 0, newWidth, newHeight); + DrawIndicator(thumbnailGraph, newWidth, newHeight, options.Indicator); + var outputFormat = GetOutputFormat(originalImage, options.OutputFormat); using (var outputMemoryStream = new MemoryStream()) @@ -204,6 +206,20 @@ namespace MediaBrowser.Server.Implementations.Drawing } } + private WatchedIndicatorDrawer _watchedDrawer; + + private void DrawIndicator(Graphics graphics, int imageWidth, int imageHeight, ImageOverlay indicator) + { + if (indicator == ImageOverlay.Watched) + { + _watchedDrawer = _watchedDrawer ?? (_watchedDrawer = new WatchedIndicatorDrawer()); + + var currentImageSize = new Size(imageWidth, imageHeight); + + _watchedDrawer.Process(graphics, currentImageSize); + } + } + /// <summary> /// Gets the output format. /// </summary> @@ -322,12 +338,7 @@ namespace MediaBrowser.Server.Implementations.Drawing /// <summary> /// Gets the cache file path based on a set of parameters /// </summary> - /// <param name="originalPath">The path to the original image file</param> - /// <param name="outputSize">The size to output the image in</param> - /// <param name="quality">Quality level, from 0-100. Currently only applies to JPG. The default value should suffice.</param> - /// <param name="dateModified">The last modified date of the image</param> - /// <returns>System.String.</returns> - private string GetCacheFilePath(string originalPath, ImageSize outputSize, int quality, DateTime dateModified, ImageOutputFormat format) + private string GetCacheFilePath(string originalPath, ImageSize outputSize, int quality, DateTime dateModified, ImageOutputFormat format, ImageOverlay overlay) { var filename = originalPath; @@ -344,6 +355,11 @@ namespace MediaBrowser.Server.Implementations.Drawing filename += "format=" + format; } + if (overlay != ImageOverlay.None) + { + filename += "overlay=" + overlay; + } + return GetCachePath(_resizedImageCachePath, filename, Path.GetExtension(originalPath)); } @@ -506,7 +522,7 @@ namespace MediaBrowser.Server.Implementations.Drawing return string.Join("|", cacheKeys.ToArray()).GetMD5(); } - private async Task<Tuple<string,DateTime>> GetEnhancedImage(string originalImagePath, DateTime dateModified, BaseItem item, + private async Task<Tuple<string, DateTime>> GetEnhancedImage(string originalImagePath, DateTime dateModified, BaseItem item, ImageType imageType, int imageIndex, List<IImageEnhancer> enhancers) { diff --git a/MediaBrowser.Server.Implementations/Drawing/WatchedIndicatorDrawer.cs b/MediaBrowser.Server.Implementations/Drawing/WatchedIndicatorDrawer.cs new file mode 100644 index 000000000..921494dba --- /dev/null +++ b/MediaBrowser.Server.Implementations/Drawing/WatchedIndicatorDrawer.cs @@ -0,0 +1,33 @@ +using System.Drawing; + +namespace MediaBrowser.Server.Implementations.Drawing +{ + public class WatchedIndicatorDrawer + { + private const int IndicatorHeight = 50; + private const int FontSize = 50; + + public void Process(Graphics graphics, Size imageSize) + { + var x = imageSize.Width - IndicatorHeight; + + using (var backdroundBrush = new SolidBrush(Color.FromArgb(225, 204, 51, 51))) + { + graphics.FillRectangle(backdroundBrush, x, 0, IndicatorHeight, IndicatorHeight); + + const string text = "a"; + + x = imageSize.Width - 55; + + using (var font = new Font("Webdings", FontSize, FontStyle.Regular, GraphicsUnit.Pixel)) + { + using (var fontBrush = new SolidBrush(Color.White)) + { + graphics.DrawString(text, font, fontBrush, x, -2); + } + } + } + + } + } +} diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index ff9ff4735..80fee7d97 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -114,6 +114,7 @@ <Compile Include="BdInfo\BdInfoExaminer.cs" /> <Compile Include="Configuration\ServerConfigurationManager.cs" /> <Compile Include="Drawing\ImageHeader.cs" /> + <Compile Include="Drawing\WatchedIndicatorDrawer.cs" /> <Compile Include="Dto\DtoService.cs" /> <Compile Include="EntryPoints\LibraryChangedNotifier.cs" /> <Compile Include="EntryPoints\LoadRegistrations.cs" /> |
