Register default ImageSharp configuration for application-wide use
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
using Microsoft.Extensions.Options;
|
||||
using SixLabors.ImageSharp;
|
||||
using SixLabors.ImageSharp.Web.Middleware;
|
||||
|
||||
namespace Umbraco.Cms.Web.Common.DependencyInjection
|
||||
{
|
||||
/// <summary>
|
||||
/// Configures the ImageSharp middleware options to use the registered configuration.
|
||||
/// </summary>
|
||||
/// <seealso cref="Microsoft.Extensions.Options.IConfigureOptions<SixLabors.ImageSharp.Web.Middleware.ImageSharpMiddlewareOptions>" />
|
||||
internal class ImageSharpConfigurationOptions : IConfigureOptions<ImageSharpMiddlewareOptions>
|
||||
{
|
||||
/// <summary>
|
||||
/// The ImageSharp configuration.
|
||||
/// </summary>
|
||||
private readonly Configuration _configuration;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ImageSharpConfigurationOptions" /> class.
|
||||
/// </summary>
|
||||
/// <param name="configuration">The ImageSharp configuration.</param>
|
||||
public ImageSharpConfigurationOptions(Configuration configuration) => _configuration = configuration;
|
||||
|
||||
/// <summary>
|
||||
/// Invoked to configure a <typeparamref name="TOptions" /> instance.
|
||||
/// </summary>
|
||||
/// <param name="options">The options instance to configure.</param>
|
||||
public void Configure(ImageSharpMiddlewareOptions options) => options.Configuration = _configuration;
|
||||
}
|
||||
}
|
||||
@@ -2,13 +2,16 @@ using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
using SixLabors.ImageSharp.Web.Caching;
|
||||
using SixLabors.ImageSharp.Web.Commands;
|
||||
using SixLabors.ImageSharp.Web.DependencyInjection;
|
||||
using SixLabors.ImageSharp.Web.Middleware;
|
||||
using SixLabors.ImageSharp.Web.Processors;
|
||||
using Umbraco.Cms.Core.Configuration.Models;
|
||||
using Umbraco.Cms.Core.DependencyInjection;
|
||||
using Umbraco.Cms.Core.Media;
|
||||
using Umbraco.Cms.Web.Common.DependencyInjection;
|
||||
using Umbraco.Cms.Web.Common.ImageProcessors;
|
||||
using Umbraco.Cms.Web.Common.Media;
|
||||
|
||||
@@ -29,6 +32,7 @@ namespace Umbraco.Extensions
|
||||
|
||||
services.AddImageSharp(options =>
|
||||
{
|
||||
// The configuration is set using ImageSharpConfigurationOptions
|
||||
options.BrowserMaxAge = imagingSettings.Cache.BrowserMaxAge;
|
||||
options.CacheMaxAge = imagingSettings.Cache.CacheMaxAge;
|
||||
options.CachedNameLength = imagingSettings.Cache.CachedNameLength;
|
||||
@@ -52,15 +56,13 @@ namespace Umbraco.Extensions
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
})
|
||||
.Configure<PhysicalFileSystemCacheOptions>(options =>
|
||||
{
|
||||
options.CacheFolder = imagingSettings.Cache.CacheFolder;
|
||||
})
|
||||
.Configure<PhysicalFileSystemCacheOptions>(options => options.CacheFolder = imagingSettings.Cache.CacheFolder)
|
||||
// We need to add CropWebProcessor before ResizeWebProcessor (until https://github.com/SixLabors/ImageSharp.Web/issues/182 is fixed)
|
||||
.RemoveProcessor<ResizeWebProcessor>()
|
||||
.AddProcessor<CropWebProcessor>()
|
||||
.AddProcessor<ResizeWebProcessor>();
|
||||
|
||||
builder.Services.AddTransient<IConfigureOptions<ImageSharpMiddlewareOptions>, ImageSharpConfigurationOptions>();
|
||||
builder.Services.AddUnique<IImageUrlGenerator, ImageSharpImageUrlGenerator>();
|
||||
|
||||
return services;
|
||||
|
||||
@@ -3,8 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Microsoft.Extensions.Options;
|
||||
using SixLabors.ImageSharp.Web.Middleware;
|
||||
using SixLabors.ImageSharp;
|
||||
using SixLabors.ImageSharp.Web.Processors;
|
||||
using Umbraco.Cms.Core.Media;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
@@ -24,9 +23,9 @@ namespace Umbraco.Cms.Web.Common.Media
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ImageSharpImageUrlGenerator" /> class.
|
||||
/// </summary>
|
||||
/// <param name="options">The options.</param>
|
||||
public ImageSharpImageUrlGenerator(IOptions<ImageSharpMiddlewareOptions> options)
|
||||
: this(options.Value.Configuration.ImageFormats.SelectMany(f => f.FileExtensions).ToArray())
|
||||
/// <param name="configuration">The ImageSharp configuration.</param>
|
||||
public ImageSharpImageUrlGenerator(Configuration configuration)
|
||||
: this(configuration.ImageFormats.SelectMany(f => f.FileExtensions).ToArray())
|
||||
{ }
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user