From e96634e07f4e091d4094042416eb9d0af4c592a1 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 11 Aug 2025 10:21:25 +0800 Subject: [PATCH] Reverse the contributors so that the services added later are executed first. --- .../Volo/Abp/Imaging/ImageCompressor.cs | 30 +++++------ .../Volo/Abp/Imaging/ImageResizer.cs | 54 +++++++++---------- 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/ImageCompressor.cs b/framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/ImageCompressor.cs index fb60e56a59..1d0e649d28 100644 --- a/framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/ImageCompressor.cs +++ b/framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/ImageCompressor.cs @@ -12,9 +12,9 @@ namespace Volo.Abp.Imaging; public class ImageCompressor : IImageCompressor, ITransientDependency { protected IEnumerable ImageCompressorContributors { get; } - + protected ICancellationTokenProvider CancellationTokenProvider { get; } - + public ImageCompressor(IEnumerable imageCompressorContributors, ICancellationTokenProvider cancellationTokenProvider) { ImageCompressorContributors = imageCompressorContributors.Reverse(); @@ -27,12 +27,12 @@ public class ImageCompressor : IImageCompressor, ITransientDependency CancellationToken cancellationToken = default) { Check.NotNull(stream, nameof(stream)); - + if(!stream.CanRead) { return new ImageCompressResult(stream, ImageProcessState.Unsupported); } - + if(!stream.CanSeek) { var memoryStream = new MemoryStream(); @@ -41,12 +41,12 @@ public class ImageCompressor : IImageCompressor, ITransientDependency stream = memoryStream; } - foreach (var imageCompressorContributor in ImageCompressorContributors) + foreach (var imageCompressorContributor in ImageCompressorContributors.Reverse()) { var result = await imageCompressorContributor.TryCompressAsync(stream, mimeType, CancellationTokenProvider.FallbackToProvider(cancellationToken)); - + SeekToBegin(stream); - + if (result.State == ImageProcessState.Unsupported) { continue; @@ -54,7 +54,7 @@ public class ImageCompressor : IImageCompressor, ITransientDependency return result; } - + return new ImageCompressResult(stream, ImageProcessState.Unsupported); } @@ -64,22 +64,22 @@ public class ImageCompressor : IImageCompressor, ITransientDependency CancellationToken cancellationToken = default) { Check.NotNull(bytes, nameof(bytes)); - - foreach (var imageCompressorContributor in ImageCompressorContributors) + + foreach (var imageCompressorContributor in ImageCompressorContributors.Reverse()) { var result = await imageCompressorContributor.TryCompressAsync(bytes, mimeType, CancellationTokenProvider.FallbackToProvider(cancellationToken)); - + if (result.State == ImageProcessState.Unsupported) { continue; } - + return result; } - + return new ImageCompressResult(bytes, ImageProcessState.Unsupported); } - + protected virtual void SeekToBegin(Stream stream) { if (stream.CanSeek) @@ -87,4 +87,4 @@ public class ImageCompressor : IImageCompressor, ITransientDependency stream.Seek(0, SeekOrigin.Begin); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/ImageResizer.cs b/framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/ImageResizer.cs index 80d9ec8815..96bf69b2aa 100644 --- a/framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/ImageResizer.cs +++ b/framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/ImageResizer.cs @@ -13,36 +13,36 @@ namespace Volo.Abp.Imaging; public class ImageResizer : IImageResizer, ITransientDependency { protected IEnumerable ImageResizerContributors { get; } - + protected ImageResizeOptions ImageResizeOptions { get; } - + protected ICancellationTokenProvider CancellationTokenProvider { get; } - + public ImageResizer( - IEnumerable imageResizerContributors, - IOptions imageResizeOptions, + IEnumerable imageResizerContributors, + IOptions imageResizeOptions, ICancellationTokenProvider cancellationTokenProvider) { ImageResizerContributors = imageResizerContributors.Reverse(); CancellationTokenProvider = cancellationTokenProvider; ImageResizeOptions = imageResizeOptions.Value; } - + public virtual async Task> ResizeAsync( - [NotNull] Stream stream, - ImageResizeArgs resizeArgs, - string? mimeType = null, + [NotNull] Stream stream, + ImageResizeArgs resizeArgs, + string? mimeType = null, CancellationToken cancellationToken = default) { Check.NotNull(stream, nameof(stream)); - + ChangeDefaultResizeMode(resizeArgs); - + if(!stream.CanRead) { return new ImageResizeResult(stream, ImageProcessState.Unsupported); } - + if(!stream.CanSeek) { var memoryStream = new MemoryStream(); @@ -50,13 +50,13 @@ public class ImageResizer : IImageResizer, ITransientDependency SeekToBegin(memoryStream); stream = memoryStream; } - - foreach (var imageResizerContributor in ImageResizerContributors) + + foreach (var imageResizerContributor in ImageResizerContributors.Reverse()) { var result = await imageResizerContributor.TryResizeAsync(stream, resizeArgs, mimeType, CancellationTokenProvider.FallbackToProvider(cancellationToken)); SeekToBegin(stream); - + if (result.State == ImageProcessState.Unsupported) { continue; @@ -64,24 +64,24 @@ public class ImageResizer : IImageResizer, ITransientDependency return result; } - + return new ImageResizeResult(stream, ImageProcessState.Unsupported); } public virtual async Task> ResizeAsync( - [NotNull] byte[] bytes, - ImageResizeArgs resizeArgs, - string? mimeType = null, + [NotNull] byte[] bytes, + ImageResizeArgs resizeArgs, + string? mimeType = null, CancellationToken cancellationToken = default) { Check.NotNull(bytes, nameof(bytes)); - + ChangeDefaultResizeMode(resizeArgs); - - foreach (var imageResizerContributor in ImageResizerContributors) + + foreach (var imageResizerContributor in ImageResizerContributors.Reverse()) { var result = await imageResizerContributor.TryResizeAsync(bytes, resizeArgs, mimeType, CancellationTokenProvider.FallbackToProvider(cancellationToken)); - + if (result.State == ImageProcessState.Unsupported) { continue; @@ -89,10 +89,10 @@ public class ImageResizer : IImageResizer, ITransientDependency return result; } - + return new ImageResizeResult(bytes, ImageProcessState.Unsupported); } - + protected virtual void ChangeDefaultResizeMode(ImageResizeArgs resizeArgs) { if (resizeArgs.Mode == ImageResizeMode.Default) @@ -100,7 +100,7 @@ public class ImageResizer : IImageResizer, ITransientDependency resizeArgs.Mode = ImageResizeOptions.DefaultResizeMode; } } - + protected virtual void SeekToBegin(Stream stream) { if (stream.CanSeek) @@ -108,4 +108,4 @@ public class ImageResizer : IImageResizer, ITransientDependency stream.Seek(0, SeekOrigin.Begin); } } -} \ No newline at end of file +}