diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-06-04 21:19:25 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-06-04 21:19:25 -0400 |
| commit | b010faa85b59e24d7ae2e9056c8ebccc4ce2425b (patch) | |
| tree | 47a47bb5282bca60e7423d2f7fd265dd7702901f | |
| parent | 25cc19a10b13e05f2fa2bd89f9da649bbcd6bd31 (diff) | |
fixes #324 - Server to return non-cropped images to clients
| -rw-r--r-- | MediaBrowser.Api/Images/ImageRequest.cs | 3 | ||||
| -rw-r--r-- | MediaBrowser.Api/Images/ImageService.cs | 9 | ||||
| -rw-r--r-- | MediaBrowser.Api/Images/ImageWriter.cs | 15 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/TV/Episode.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Model/DTO/ImageOptions.cs | 6 |
5 files changed, 26 insertions, 13 deletions
diff --git a/MediaBrowser.Api/Images/ImageRequest.cs b/MediaBrowser.Api/Images/ImageRequest.cs index 1c11f527d..3ea86e01c 100644 --- a/MediaBrowser.Api/Images/ImageRequest.cs +++ b/MediaBrowser.Api/Images/ImageRequest.cs @@ -45,6 +45,9 @@ namespace MediaBrowser.Api.Images /// <value>The tag.</value> [ApiMember(Name = "Tag", Description = "Optional. Supply the cache tag from the item object to receive strong caching headers.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public string Tag { get; set; } + + [ApiMember(Name = "CropWhitespace", Description = "Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public bool? CropWhitespace { get; set; } } /// <summary> diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs index 967c449c2..24fda11fc 100644 --- a/MediaBrowser.Api/Images/ImageService.cs +++ b/MediaBrowser.Api/Images/ImageService.cs @@ -691,11 +691,14 @@ namespace MediaBrowser.Api.Images cacheDuration = TimeSpan.FromDays(365); } + // Avoid implicitly captured closure + var currentItem = item; + var currentRequest = request; + return ToCachedResult(cacheGuid, originalFileImageDateModified, cacheDuration, () => new ImageWriter { - Item = item, - Request = request, - CropWhiteSpace = request.Type == ImageType.Logo || request.Type == ImageType.Art, + Item = currentItem, + Request = currentRequest, OriginalImageDateModified = originalFileImageDateModified, Enhancers = supportedImageEnhancers diff --git a/MediaBrowser.Api/Images/ImageWriter.cs b/MediaBrowser.Api/Images/ImageWriter.cs index e77a2f9b0..81dbb0243 100644 --- a/MediaBrowser.Api/Images/ImageWriter.cs +++ b/MediaBrowser.Api/Images/ImageWriter.cs @@ -1,6 +1,7 @@ using MediaBrowser.Controller; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; using ServiceStack.Service; using ServiceStack.ServiceHost; using System; @@ -28,11 +29,6 @@ namespace MediaBrowser.Api.Images /// <value>The item.</value> public BaseItem Item { get; set; } /// <summary> - /// Gets or sets a value indicating whether [crop white space]. - /// </summary> - /// <value><c>true</c> if [crop white space]; otherwise, <c>false</c>.</value> - public bool CropWhiteSpace { get; set; } - /// <summary> /// The original image date modified /// </summary> public DateTime OriginalImageDateModified; @@ -68,7 +64,14 @@ namespace MediaBrowser.Api.Images /// <returns>Task.</returns> private Task WriteToAsync(Stream responseStream) { - return Kernel.Instance.ImageManager.ProcessImage(Item, Request.Type, Request.Index ?? 0, CropWhiteSpace, + var cropwhitespace = Request.Type == ImageType.Logo || Request.Type == ImageType.Art; + + if (Request.CropWhitespace.HasValue) + { + cropwhitespace = Request.CropWhitespace.Value; + } + + return Kernel.Instance.ImageManager.ProcessImage(Item, Request.Type, Request.Index ?? 0, cropwhitespace, OriginalImageDateModified, responseStream, Request.Width, Request.Height, Request.MaxWidth, Request.MaxHeight, Request.Quality, Enhancers); } diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs index 2f1e036e0..116997d96 100644 --- a/MediaBrowser.Controller/Entities/TV/Episode.cs +++ b/MediaBrowser.Controller/Entities/TV/Episode.cs @@ -54,11 +54,9 @@ namespace MediaBrowser.Controller.Entities.TV /// <returns>System.String.</returns> public override string GetUserDataKey() { - if (Series != null) + if (Series != null && ParentIndexNumber.HasValue && IndexNumber.HasValue) { - var seasonNo = Season != null ? Season.IndexNumber ?? 0 : 0; - var epNo = IndexNumber ?? 0; - return Series.GetUserDataKey() + seasonNo.ToString("000") + epNo.ToString("000"); + return Series.GetUserDataKey() + ParentIndexNumber.Value.ToString("000") + IndexNumber.Value.ToString("000"); } return base.GetUserDataKey(); diff --git a/MediaBrowser.Model/DTO/ImageOptions.cs b/MediaBrowser.Model/DTO/ImageOptions.cs index 6b85cb78f..68ca91ed0 100644 --- a/MediaBrowser.Model/DTO/ImageOptions.cs +++ b/MediaBrowser.Model/DTO/ImageOptions.cs @@ -57,5 +57,11 @@ namespace MediaBrowser.Model.Dto /// </summary> /// <value>The hash.</value> public Guid? Tag { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether [crop whitespace]. + /// </summary> + /// <value><c>null</c> if [crop whitespace] contains no value, <c>true</c> if [crop whitespace]; otherwise, <c>false</c>.</value> + public bool? CropWhitespace { get; set; } } } |
