mirror of https://github.com/abpframework/abp.git
11 changed files with 0 additions and 261 deletions
@ -1,3 +0,0 @@ |
|||||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"> |
|
||||
<ConfigureAwait ContinueOnCapturedContext="false" /> |
|
||||
</Weavers> |
|
||||
@ -1,30 +0,0 @@ |
|||||
<?xml version="1.0" encoding="utf-8"?> |
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> |
|
||||
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. --> |
|
||||
<xs:element name="Weavers"> |
|
||||
<xs:complexType> |
|
||||
<xs:all> |
|
||||
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1"> |
|
||||
<xs:complexType> |
|
||||
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" /> |
|
||||
</xs:complexType> |
|
||||
</xs:element> |
|
||||
</xs:all> |
|
||||
<xs:attribute name="VerifyAssembly" type="xs:boolean"> |
|
||||
<xs:annotation> |
|
||||
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation> |
|
||||
</xs:annotation> |
|
||||
</xs:attribute> |
|
||||
<xs:attribute name="VerifyIgnoreCodes" type="xs:string"> |
|
||||
<xs:annotation> |
|
||||
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation> |
|
||||
</xs:annotation> |
|
||||
</xs:attribute> |
|
||||
<xs:attribute name="GenerateXsd" type="xs:boolean"> |
|
||||
<xs:annotation> |
|
||||
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation> |
|
||||
</xs:annotation> |
|
||||
</xs:attribute> |
|
||||
</xs:complexType> |
|
||||
</xs:element> |
|
||||
</xs:schema> |
|
||||
@ -1,19 +0,0 @@ |
|||||
<Project Sdk="Microsoft.NET.Sdk"> |
|
||||
|
|
||||
<Import Project="..\..\..\configureawait.props" /> |
|
||||
<Import Project="..\..\..\common.props" /> |
|
||||
|
|
||||
<PropertyGroup> |
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> |
|
||||
<PackageId>Volo.Abp.Image</PackageId> |
|
||||
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> |
|
||||
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> |
|
||||
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> |
|
||||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> |
|
||||
<RootNamespace /> |
|
||||
</PropertyGroup> |
|
||||
|
|
||||
<ItemGroup> |
|
||||
<ProjectReference Include="..\Volo.Abp.Image.Abstractions\Volo.Abp.Image.Abstractions.csproj" /> |
|
||||
</ItemGroup> |
|
||||
</Project> |
|
||||
@ -1,3 +0,0 @@ |
|||||
{ |
|
||||
"role": "lib.framework" |
|
||||
} |
|
||||
@ -1,8 +0,0 @@ |
|||||
using Volo.Abp.Modularity; |
|
||||
|
|
||||
namespace Volo.Abp.Image; |
|
||||
|
|
||||
[DependsOn(typeof(AbpImageAbstractionsModule))] |
|
||||
public class AbpImageModule : AbpModule |
|
||||
{ |
|
||||
} |
|
||||
@ -1,50 +0,0 @@ |
|||||
using System; |
|
||||
using System.Threading; |
|
||||
using System.Threading.Tasks; |
|
||||
using Microsoft.Extensions.DependencyInjection; |
|
||||
using Volo.Abp.Content; |
|
||||
|
|
||||
namespace Volo.Abp.Image; |
|
||||
|
|
||||
public static class IRemoteStreamContentExtensions |
|
||||
{ |
|
||||
public async static Task<IRemoteStreamContent> CompressImageAsync(this IRemoteStreamContent remoteStreamContent, IImageFormat imageFormat, IImageCompressor imageCompressor, CancellationToken cancellationToken = default) |
|
||||
{ |
|
||||
if (!imageCompressor.CanCompress(imageFormat)) |
|
||||
{ |
|
||||
return remoteStreamContent; |
|
||||
} |
|
||||
|
|
||||
var compressedImageStream = await remoteStreamContent.GetStream().CompressImageAsync(imageFormat, imageCompressor, cancellationToken); |
|
||||
|
|
||||
return new RemoteStreamContent(compressedImageStream, remoteStreamContent.FileName, remoteStreamContent.ContentType); |
|
||||
} |
|
||||
|
|
||||
public async static Task<IRemoteStreamContent> CompressImageAsync(this IRemoteStreamContent remoteStreamContent, IServiceProvider serviceProvider, CancellationToken cancellationToken = default) |
|
||||
{ |
|
||||
var imageFormatDetector = serviceProvider.GetRequiredService<IImageFormatDetector>(); |
|
||||
var imageCompressorSelector = serviceProvider.GetRequiredService<IImageCompressorSelector>(); |
|
||||
var format = imageFormatDetector.FindFormat(remoteStreamContent.GetStream()); |
|
||||
return await remoteStreamContent.CompressImageAsync(format, imageCompressorSelector.FindCompressor(format), cancellationToken); |
|
||||
} |
|
||||
|
|
||||
public async static Task<IRemoteStreamContent> ResizeImageAsync(this IRemoteStreamContent remoteStreamContent, IImageResizeParameter imageResizeParameter, IImageFormat imageFormat, IImageResizer imageResizer, CancellationToken cancellationToken = default) |
|
||||
{ |
|
||||
if (!imageResizer.CanResize(imageFormat)) |
|
||||
{ |
|
||||
return remoteStreamContent; |
|
||||
} |
|
||||
|
|
||||
var resizedImageStream = await remoteStreamContent.GetStream().ResizeImageAsync(imageResizeParameter, imageFormat, imageResizer, cancellationToken); |
|
||||
|
|
||||
return new RemoteStreamContent(resizedImageStream, remoteStreamContent.FileName, remoteStreamContent.ContentType); |
|
||||
} |
|
||||
|
|
||||
public async static Task<IRemoteStreamContent> ResizeImageAsync(this IRemoteStreamContent remoteStreamContent, IImageResizeParameter imageResizeParameter, IServiceProvider serviceProvider, CancellationToken cancellationToken = default) |
|
||||
{ |
|
||||
var imageFormatDetector = serviceProvider.GetRequiredService<IImageFormatDetector>(); |
|
||||
var imageResizerSelector = serviceProvider.GetRequiredService<IImageResizerSelector>(); |
|
||||
var format = imageFormatDetector.FindFormat(remoteStreamContent.GetStream()); |
|
||||
return await remoteStreamContent.ResizeImageAsync(imageResizeParameter, format, imageResizerSelector.FindResizer(format), cancellationToken); |
|
||||
} |
|
||||
} |
|
||||
@ -1,20 +0,0 @@ |
|||||
using System.Collections.Generic; |
|
||||
using System.Linq; |
|
||||
using Volo.Abp.DependencyInjection; |
|
||||
|
|
||||
namespace Volo.Abp.Image; |
|
||||
|
|
||||
public class ImageCompressorSelector : IImageCompressorSelector, ITransientDependency |
|
||||
{ |
|
||||
private readonly IEnumerable<IImageCompressor> _imageCompressors; |
|
||||
|
|
||||
public ImageCompressorSelector(IEnumerable<IImageCompressor> imageCompressors) |
|
||||
{ |
|
||||
_imageCompressors = imageCompressors; |
|
||||
} |
|
||||
|
|
||||
public IImageCompressor FindCompressor(IImageFormat imageFormat) |
|
||||
{ |
|
||||
return _imageCompressors.FirstOrDefault(x => x.CanCompress(imageFormat)); |
|
||||
} |
|
||||
} |
|
||||
@ -1,19 +0,0 @@ |
|||||
namespace Volo.Abp.Image; |
|
||||
|
|
||||
public class ImageResizeArgs : IImageResizeParameter |
|
||||
{ |
|
||||
public int? Width { get; set; } |
|
||||
|
|
||||
public int? Height { get; set; } |
|
||||
|
|
||||
public ImageResizeMode? Mode { get; set; } //TODO: Set default here
|
|
||||
|
|
||||
public ImageResizeArgs(int? width = null, int? height = null, ImageResizeMode? mode = null) |
|
||||
{ |
|
||||
Mode = mode; |
|
||||
Width = width; |
|
||||
Height = height; |
|
||||
|
|
||||
//TODO: Throw exception if width/height is not null and negative
|
|
||||
} |
|
||||
} |
|
||||
@ -1,20 +0,0 @@ |
|||||
using System.Collections.Generic; |
|
||||
using System.Linq; |
|
||||
using Volo.Abp.DependencyInjection; |
|
||||
|
|
||||
namespace Volo.Abp.Image; |
|
||||
|
|
||||
public class ImageResizerSelector : IImageResizerSelector, ITransientDependency |
|
||||
{ |
|
||||
private readonly IEnumerable<IImageResizer> _imageResizers; |
|
||||
|
|
||||
public ImageResizerSelector(IEnumerable<IImageResizer> imageResizers) |
|
||||
{ |
|
||||
_imageResizers = imageResizers; |
|
||||
} |
|
||||
|
|
||||
public IImageResizer FindResizer(IImageFormat imageFormat) |
|
||||
{ |
|
||||
return _imageResizers.FirstOrDefault(x => x.CanResize(imageFormat)); |
|
||||
} |
|
||||
} |
|
||||
@ -1,82 +0,0 @@ |
|||||
using System; |
|
||||
using System.IO; |
|
||||
using System.Threading; |
|
||||
using System.Threading.Tasks; |
|
||||
using Microsoft.Extensions.DependencyInjection; |
|
||||
|
|
||||
namespace Volo.Abp.Image; |
|
||||
|
|
||||
public static class StreamExtensions //TODO: Remove
|
|
||||
{ |
|
||||
public static Stream CompressImage(this Stream stream, IImageFormat imageFormat, IImageCompressor imageCompressor) |
|
||||
{ |
|
||||
if (!imageCompressor.CanCompress(imageFormat)) |
|
||||
{ |
|
||||
return stream; |
|
||||
} |
|
||||
|
|
||||
return imageCompressor.Compress(stream); |
|
||||
} |
|
||||
|
|
||||
public static Stream CompressImage(this Stream stream, IServiceProvider serviceProvider) |
|
||||
{ |
|
||||
var imageFormatDetector = serviceProvider.GetRequiredService<IImageFormatDetector>(); |
|
||||
var imageCompressorSelector = serviceProvider.GetRequiredService<IImageCompressorSelector>(); |
|
||||
var format = imageFormatDetector.FindFormat(stream); |
|
||||
return stream.CompressImage(format, imageCompressorSelector.FindCompressor(format)); |
|
||||
} |
|
||||
|
|
||||
public static Task<Stream> CompressImageAsync(this Stream stream, IImageFormat imageFormat, IImageCompressor imageCompressor, CancellationToken cancellationToken = default) |
|
||||
{ |
|
||||
if (!imageCompressor.CanCompress(imageFormat)) |
|
||||
{ |
|
||||
return Task.FromResult(stream); |
|
||||
} |
|
||||
|
|
||||
return imageCompressor.CompressAsync(stream, cancellationToken); |
|
||||
} |
|
||||
|
|
||||
public static Task<Stream> CompressImageAsync(this Stream stream, IServiceProvider serviceProvider, CancellationToken cancellationToken = default) |
|
||||
{ |
|
||||
var imageFormatDetector = serviceProvider.GetRequiredService<IImageFormatDetector>(); |
|
||||
var imageCompressorSelector = serviceProvider.GetRequiredService<IImageCompressorSelector>(); |
|
||||
var format = imageFormatDetector.FindFormat(stream); |
|
||||
return stream.CompressImageAsync(format, imageCompressorSelector.FindCompressor(format), cancellationToken); |
|
||||
} |
|
||||
|
|
||||
public static Stream ResizeImage(this Stream stream, IImageResizeParameter imageResizeParameter, IImageFormat imageFormat, IImageResizer imageResizer) |
|
||||
{ |
|
||||
if (!imageResizer.CanResize(imageFormat)) |
|
||||
{ |
|
||||
return stream; |
|
||||
} |
|
||||
|
|
||||
return imageResizer.Resize(stream, imageResizeParameter); |
|
||||
} |
|
||||
|
|
||||
public static Stream ResizeImage(this Stream stream, IImageResizeParameter imageResizeParameter, IServiceProvider serviceProvider) |
|
||||
{ |
|
||||
var imageFormatDetector = serviceProvider.GetRequiredService<IImageFormatDetector>(); |
|
||||
var imageResizerSelector = serviceProvider.GetRequiredService<IImageResizerSelector>(); |
|
||||
var format = imageFormatDetector.FindFormat(stream); |
|
||||
return stream.ResizeImage(imageResizeParameter, format, imageResizerSelector.FindResizer(format)); |
|
||||
} |
|
||||
|
|
||||
public static Task<Stream> ResizeImageAsync(this Stream stream, IImageResizeParameter imageResizeParameter, IImageFormat imageFormat, IImageResizer imageResizer, CancellationToken cancellationToken = default) |
|
||||
{ |
|
||||
if (!imageResizer.CanResize(imageFormat)) |
|
||||
{ |
|
||||
return Task.FromResult(stream); |
|
||||
} |
|
||||
|
|
||||
return imageResizer.ResizeAsync(stream, imageResizeParameter, cancellationToken); |
|
||||
} |
|
||||
|
|
||||
public static Task<Stream> ResizeImageAsync(this Stream stream, IImageResizeParameter imageResizeParameter, IServiceProvider serviceProvider, CancellationToken cancellationToken = default) |
|
||||
{ |
|
||||
var imageFormatDetector = serviceProvider.GetRequiredService<IImageFormatDetector>(); |
|
||||
var imageResizerSelector = serviceProvider.GetRequiredService<IImageResizerSelector>(); |
|
||||
var format = imageFormatDetector.FindFormat(stream); |
|
||||
return stream.ResizeImageAsync(imageResizeParameter, format, imageResizerSelector.FindResizer(format), cancellationToken); |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue