feat:完善模块化+缩略图模块

This commit is contained in:
橙子
2023-04-02 19:29:44 +08:00
parent b90962943a
commit 9c921adc5b
144 changed files with 208 additions and 462 deletions

View File

@@ -0,0 +1,64 @@
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.Formats.Png;
using SixLabors.ImageSharp.Processing;
namespace Yi.Framework.ImageSharp;
public class ImageSharpManager
{
public void ImageCompress(string fileName, Stream stream, string savePath)
{
var extensionName = Path.GetExtension(fileName).ToLower();
if (extensionName == ".png")
{
PngImageCompress(stream, savePath);
}
else if (extensionName == ".jpg" || extensionName == ".jpeg")
{
JpgImageCompress(stream, savePath);
}
else
{
using (var fileStream = new FileStream(savePath, FileMode.Create, FileAccess.Write))
{
stream.CopyTo(fileStream);
}
}
}
public void PngImageCompress(Stream stream, string savePath)
{
using (var image = Image.Load(stream))
{
var encoder = new PngEncoder()
{
CompressionLevel = PngCompressionLevel.Level6,
};
if (image.Width > 300)
{
image.Mutate(a => a.Resize(image.Width/2, image.Height/2));
}
image.Save(savePath, encoder);
}
}
public void JpgImageCompress(Stream stream, string savePath)
{
using (var image = Image.Load(stream))
{
var encoder = new JpegEncoder()
{
Quality = 30
};
if (image.Width > 300)
{
image.Mutate(a => a.Resize(image.Width / 2, image.Height / 2));
}
image.Save(savePath, encoder);
}
}
}

View File

@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SixLabors.ImageSharp" Version="3.0.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\framework\Yi.Framework.Core\Yi.Framework.Core.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,23 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using StartupModules;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Yi.Framework.ImageSharp
{
public class YiFrameworkImageSharpModule : IStartupModule
{
public void Configure(IApplicationBuilder app, ConfigureMiddlewareContext context)
{
}
public void ConfigureServices(IServiceCollection services, ConfigureServicesContext context)
{
services.AddSingleton<ImageSharpManager>();
}
}
}