@ -5,9 +5,6 @@ using System.Threading.Tasks;
using Microsoft.Extensions.Options ;
using Microsoft.Extensions.Options ;
using SixLabors.ImageSharp ;
using SixLabors.ImageSharp ;
using SixLabors.ImageSharp.Formats ;
using SixLabors.ImageSharp.Formats ;
using SixLabors.ImageSharp.Formats.Jpeg ;
using SixLabors.ImageSharp.Formats.Png ;
using SixLabors.ImageSharp.Formats.Webp ;
using Volo.Abp.DependencyInjection ;
using Volo.Abp.DependencyInjection ;
using Volo.Abp.Http ;
using Volo.Abp.Http ;
@ -32,7 +29,7 @@ public class ImageSharpImageCompressorContributor : IImageCompressorContributor,
return new ImageCompressResult < Stream > ( stream , ImageProcessState . Unsupported ) ;
return new ImageCompressResult < Stream > ( stream , ImageProcessState . Unsupported ) ;
}
}
var image = await Image . LoadAsync ( stream , cancellationToken ) ;
using var image = await Image . LoadAsync ( stream , cancellationToken ) ;
if ( ! CanCompress ( image . Metadata . DecodedImageFormat ! . DefaultMimeType ) )
if ( ! CanCompress ( image . Metadata . DecodedImageFormat ! . DefaultMimeType ) )
{
{
@ -46,7 +43,7 @@ public class ImageSharpImageCompressorContributor : IImageCompressorContributor,
return new ImageCompressResult < Stream > ( memoryStream , ImageProcessState . Done ) ;
return new ImageCompressResult < Stream > ( memoryStream , ImageProcessState . Done ) ;
}
}
memoryStream . Dispose ( ) ;
await memoryStream . DisposeAsync ( ) ;
return new ImageCompressResult < Stream > ( stream , ImageProcessState . Canceled ) ;
return new ImageCompressResult < Stream > ( stream , ImageProcessState . Canceled ) ;
}
}
@ -69,7 +66,7 @@ public class ImageSharpImageCompressorContributor : IImageCompressorContributor,
}
}
var newBytes = await result . Result . GetAllBytesAsync ( cancellationToken ) ;
var newBytes = await result . Result . GetAllBytesAsync ( cancellationToken ) ;
result . Result . Dispose ( ) ;
await result . Result . DisposeAsync ( ) ;
return new ImageCompressResult < byte [ ] > ( newBytes , result . State ) ;
return new ImageCompressResult < byte [ ] > ( newBytes , result . State ) ;
}
}
@ -100,7 +97,7 @@ public class ImageSharpImageCompressorContributor : IImageCompressorContributor,
}
}
catch
catch
{
{
memoryStream . Dispose ( ) ;
await memoryStream . DisposeAsync ( ) ;
throw ;
throw ;
}
}
}
}
@ -110,11 +107,11 @@ public class ImageSharpImageCompressorContributor : IImageCompressorContributor,
switch ( format . DefaultMimeType )
switch ( format . DefaultMimeType )
{
{
case MimeTypes . Image . Jpeg :
case MimeTypes . Image . Jpeg :
return Options . JpegEncoder ? ? new JpegEncoder ( ) ;
return Options . JpegEncoder ;
case MimeTypes . Image . Png :
case MimeTypes . Image . Png :
return Options . PngEncoder ? ? new PngEncoder ( ) ;
return Options . PngEncoder ;
case MimeTypes . Image . Webp :
case MimeTypes . Image . Webp :
return Options . WebpEncoder ? ? new WebpEncoder ( ) ;
return Options . WebpEncoder ;
default :
default :
throw new NotSupportedException ( $"No encoder available for the given format: {format.Name}" ) ;
throw new NotSupportedException ( $"No encoder available for the given format: {format.Name}" ) ;
}
}