在ASP.NET Core 3.1中,可以使用 System.Drawing.Common
或者第三方库 ImageSharp
来处理图像。下面给出两种解决方法的代码示例。
System.Drawing.Common
首先,需要安装 System.Drawing.Common
包。在项目文件(.csproj)中添加以下内容:
然后在代码中使用如下代码来处理图像:
using System.Drawing;
using System.IO;
public class ImageProvider
{
public byte[] ResizeImage(byte[] imageData, int width, int height)
{
using (var image = Image.FromStream(new MemoryStream(imageData)))
{
using (var resizedImage = new Bitmap(width, height))
{
using (var graphics = Graphics.FromImage(resizedImage))
{
graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
graphics.DrawImage(image, 0, 0, width, height);
}
using (var memoryStream = new MemoryStream())
{
resizedImage.Save(memoryStream, image.RawFormat);
return memoryStream.ToArray();
}
}
}
}
}
ImageSharp
首先,需要安装 ImageSharp
包。在项目文件(.csproj)中添加以下内容:
然后在代码中使用如下代码来处理图像:
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using System.IO;
public class ImageProvider
{
public byte[] ResizeImage(byte[] imageData, int width, int height)
{
using (var image = Image.Load(imageData))
{
image.Mutate(x => x.Resize(new ResizeOptions
{
Size = new Size(width, height),
Mode = ResizeMode.Max
}));
using (var memoryStream = new MemoryStream())
{
image.Save(memoryStream, image.CurrentImageFormat);
return memoryStream.ToArray();
}
}
}
}
这些代码示例演示了如何在ASP.NET Core 3.1中使用不同的图像提供程序来调整图像大小。根据您的需求选择合适的方法。