mirror of
https://gitee.com/ccnetcore/Yi
synced 2026-03-31 14:16:37 +08:00
feat:完善模块化+缩略图模块
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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>();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user