Browse Source

Merge commit from fork

Remove server side processing for profile picture and splash screen
Joshua M. Boniface 1 week ago
parent
commit
a2c0799489
1 changed files with 28 additions and 109 deletions
  1. 28 109
      Jellyfin.Api/Controllers/ImageController.cs

+ 28 - 109
Jellyfin.Api/Controllers/ImageController.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Collections.Immutable;
 using System.Collections.Immutable;
 using System.ComponentModel.DataAnnotations;
 using System.ComponentModel.DataAnnotations;
 using System.Diagnostics.CodeAnalysis;
 using System.Diagnostics.CodeAnalysis;
+using System.Drawing;
 using System.Globalization;
 using System.Globalization;
 using System.IO;
 using System.IO;
 using System.Linq;
 using System.Linq;
@@ -1458,19 +1459,6 @@ public class ImageController : BaseJellyfinApiController
     /// <param name="userId">User id.</param>
     /// <param name="userId">User id.</param>
     /// <param name="tag">Optional. Supply the cache tag from the item object to receive strong caching headers.</param>
     /// <param name="tag">Optional. Supply the cache tag from the item object to receive strong caching headers.</param>
     /// <param name="format">Determines the output format of the image - original,gif,jpg,png.</param>
     /// <param name="format">Determines the output format of the image - original,gif,jpg,png.</param>
-    /// <param name="maxWidth">The maximum image width to return.</param>
-    /// <param name="maxHeight">The maximum image height to return.</param>
-    /// <param name="percentPlayed">Optional. Percent to render for the percent played overlay.</param>
-    /// <param name="unplayedCount">Optional. Unplayed count overlay to render.</param>
-    /// <param name="width">The fixed image width to return.</param>
-    /// <param name="height">The fixed image height to return.</param>
-    /// <param name="quality">Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.</param>
-    /// <param name="fillWidth">Width of box to fill.</param>
-    /// <param name="fillHeight">Height of box to fill.</param>
-    /// <param name="blur">Optional. Blur image.</param>
-    /// <param name="backgroundColor">Optional. Apply a background color for transparent images.</param>
-    /// <param name="foregroundLayer">Optional. Apply a foreground layer on top of the image.</param>
-    /// <param name="imageIndex">Image index.</param>
     /// <response code="200">Image stream returned.</response>
     /// <response code="200">Image stream returned.</response>
     /// <response code="400">User id not provided.</response>
     /// <response code="400">User id not provided.</response>
     /// <response code="404">Item not found.</response>
     /// <response code="404">Item not found.</response>
@@ -1487,20 +1475,7 @@ public class ImageController : BaseJellyfinApiController
     public async Task<ActionResult> GetUserImage(
     public async Task<ActionResult> GetUserImage(
         [FromQuery] Guid? userId,
         [FromQuery] Guid? userId,
         [FromQuery] string? tag,
         [FromQuery] string? tag,
-        [FromQuery] ImageFormat? format,
-        [FromQuery] int? maxWidth,
-        [FromQuery] int? maxHeight,
-        [FromQuery] double? percentPlayed,
-        [FromQuery] int? unplayedCount,
-        [FromQuery] int? width,
-        [FromQuery] int? height,
-        [FromQuery] int? quality,
-        [FromQuery] int? fillWidth,
-        [FromQuery] int? fillHeight,
-        [FromQuery] int? blur,
-        [FromQuery] string? backgroundColor,
-        [FromQuery] string? foregroundLayer,
-        [FromQuery] int? imageIndex)
+        [FromQuery] ImageFormat? format)
     {
     {
         var requestUserId = userId ?? User.GetUserId();
         var requestUserId = userId ?? User.GetUserId();
         if (requestUserId.IsEmpty())
         if (requestUserId.IsEmpty())
@@ -1521,34 +1496,24 @@ public class ImageController : BaseJellyfinApiController
             DateModified = user.ProfileImage.LastModified
             DateModified = user.ProfileImage.LastModified
         };
         };
 
 
-        if (width.HasValue)
-        {
-            info.Width = width.Value;
-        }
-
-        if (height.HasValue)
-        {
-            info.Height = height.Value;
-        }
-
         return await GetImageInternal(
         return await GetImageInternal(
                 user.Id,
                 user.Id,
                 ImageType.Profile,
                 ImageType.Profile,
-                imageIndex,
+                null,
                 tag,
                 tag,
                 format,
                 format,
-                maxWidth,
-                maxHeight,
-                percentPlayed,
-                unplayedCount,
-                width,
-                height,
-                quality,
-                fillWidth,
-                fillHeight,
-                blur,
-                backgroundColor,
-                foregroundLayer,
+                null,
+                null,
+                null,
+                null,
+                null,
+                null,
+                90,
+                null,
+                null,
+                null,
+                null,
+                null,
                 null,
                 null,
                 info)
                 info)
             .ConfigureAwait(false);
             .ConfigureAwait(false);
@@ -1608,20 +1573,7 @@ public class ImageController : BaseJellyfinApiController
         => GetUserImage(
         => GetUserImage(
             userId,
             userId,
             tag,
             tag,
-            format,
-            maxWidth,
-            maxHeight,
-            percentPlayed,
-            unplayedCount,
-            width,
-            height,
-            quality,
-            fillWidth,
-            fillHeight,
-            blur,
-            backgroundColor,
-            foregroundLayer,
-            imageIndex);
+            format);
 
 
     /// <summary>
     /// <summary>
     /// Get user profile image.
     /// Get user profile image.
@@ -1677,36 +1629,13 @@ public class ImageController : BaseJellyfinApiController
         => GetUserImage(
         => GetUserImage(
             userId,
             userId,
             tag,
             tag,
-            format,
-            maxWidth,
-            maxHeight,
-            percentPlayed,
-            unplayedCount,
-            width,
-            height,
-            quality,
-            fillWidth,
-            fillHeight,
-            blur,
-            backgroundColor,
-            foregroundLayer,
-            imageIndex);
+            format);
 
 
     /// <summary>
     /// <summary>
     /// Generates or gets the splashscreen.
     /// Generates or gets the splashscreen.
     /// </summary>
     /// </summary>
     /// <param name="tag">Supply the cache tag from the item object to receive strong caching headers.</param>
     /// <param name="tag">Supply the cache tag from the item object to receive strong caching headers.</param>
     /// <param name="format">Determines the output format of the image - original,gif,jpg,png.</param>
     /// <param name="format">Determines the output format of the image - original,gif,jpg,png.</param>
-    /// <param name="maxWidth">The maximum image width to return.</param>
-    /// <param name="maxHeight">The maximum image height to return.</param>
-    /// <param name="width">The fixed image width to return.</param>
-    /// <param name="height">The fixed image height to return.</param>
-    /// <param name="fillWidth">Width of box to fill.</param>
-    /// <param name="fillHeight">Height of box to fill.</param>
-    /// <param name="blur">Blur image.</param>
-    /// <param name="backgroundColor">Apply a background color for transparent images.</param>
-    /// <param name="foregroundLayer">Apply a foreground layer on top of the image.</param>
-    /// <param name="quality">Quality setting, from 0-100.</param>
     /// <response code="200">Splashscreen returned successfully.</response>
     /// <response code="200">Splashscreen returned successfully.</response>
     /// <returns>The splashscreen.</returns>
     /// <returns>The splashscreen.</returns>
     [HttpGet("Branding/Splashscreen")]
     [HttpGet("Branding/Splashscreen")]
@@ -1714,17 +1643,7 @@ public class ImageController : BaseJellyfinApiController
     [ProducesImageFile]
     [ProducesImageFile]
     public async Task<ActionResult> GetSplashscreen(
     public async Task<ActionResult> GetSplashscreen(
         [FromQuery] string? tag,
         [FromQuery] string? tag,
-        [FromQuery] ImageFormat? format,
-        [FromQuery] int? maxWidth,
-        [FromQuery] int? maxHeight,
-        [FromQuery] int? width,
-        [FromQuery] int? height,
-        [FromQuery] int? fillWidth,
-        [FromQuery] int? fillHeight,
-        [FromQuery] int? blur,
-        [FromQuery] string? backgroundColor,
-        [FromQuery] string? foregroundLayer,
-        [FromQuery, Range(0, 100)] int quality = 90)
+        [FromQuery] ImageFormat? format)
     {
     {
         var brandingOptions = _serverConfigurationManager.GetConfiguration<BrandingOptions>("branding");
         var brandingOptions = _serverConfigurationManager.GetConfiguration<BrandingOptions>("branding");
         var isAdmin = User.IsInRole(Constants.UserRoles.Administrator);
         var isAdmin = User.IsInRole(Constants.UserRoles.Administrator);
@@ -1763,16 +1682,16 @@ public class ImageController : BaseJellyfinApiController
             {
             {
                 Path = splashscreenPath
                 Path = splashscreenPath
             },
             },
-            Height = height,
-            MaxHeight = maxHeight,
-            MaxWidth = maxWidth,
-            FillHeight = fillHeight,
-            FillWidth = fillWidth,
-            Quality = quality,
-            Width = width,
-            Blur = blur,
-            BackgroundColor = backgroundColor,
-            ForegroundLayer = foregroundLayer,
+            Height = null,
+            MaxHeight = null,
+            MaxWidth = null,
+            FillHeight = null,
+            FillWidth = null,
+            Quality = 90,
+            Width = null,
+            Blur = null,
+            BackgroundColor = null,
+            ForegroundLayer = null,
             SupportedOutputFormats = outputFormats
             SupportedOutputFormats = outputFormats
         };
         };