asp.net core中使用SixLabors.ImageSharp类 无损压缩图片
时间: 2024-10-11 10:04:18 浏览: 69
在ASP.NET Core中,使用SixLabors.ImageSharp库进行无损图片压缩,首先你需要安装SixLabors.ImageSharp及其依赖项。以下是一个简单的步骤说明:
1. **安装包**:
使用NuGet包管理器添加SixLabors.ImageSharp及其依赖项(例如ImageSharp.Web、ImageSharp.Processing等)。在控制台应用或项目中运行`dotnet add package SixLabors.ImageSharp` 和 `dotnet add package SixLabors.ImageSharp.Processing`。
2. **加载并处理图片**:
使用`SixLabors.ImageSharp.IO.FileStreamSource`从硬盘或内存中加载图片,然后创建一个`ImageSharp.Image`实例。
```csharp
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
// 加载图片
var image = Image.Load(stream);
// 定义压缩质量或尺寸,这里设置80%的压缩率
var settings = new ResizeSettings { Mode = ResampleMode.Lanczos };
var resizedImage = image.Resize(width: originalWidth * 0.8f, height: originalHeight * 0.8f, settings: settings);
```
3. **保存无损压缩后的图片**:
将处理过的图片流到新的`FileStreamSink`,这将保持原始数据完整性,因为ImageSharp支持无损压缩。
```csharp
using SixLabors.ImageSharp.IO;
using (var outputStream = File.Create(pathToCompressedImage))
{
resizedImage.SaveAsJpg(outputStream, quality: 80); // 更改quality调整压缩程度,范围通常是0-100
}
```
4. **处理完后释放资源**:
确保关闭所有`Image`实例和其他相关的I/O流。
阅读全文