使用ASP.NET Core和ImageSharp调整图像

posted at 2021.1.25 15:28 by administrator

我们在ASP.NET MVC中使用了WebImage类,但不幸的是,Core中没有该类。虽然 ASP.NET Core 已经是一个不错的 web 框架,但是仍然缺少如调整图像的大小这样的功能。

   .Net 中的 WebImage 类是一个相当令人印象深刻的小帮助器,当需要允许用户上传、图像处理等时,它可以满足大多数需求。

   首先、我们构建一个简单的客户端来实现ASP.NET Core 中的文件上传。

<form enctype="multipart/form-data" method="post" action="/home/upload">
    <input type="file" name="file"/>
    <input type="submit"/>
</form>

   这只是一个带有文件选择器(丑陋的)HTML表单。

   二、/ home / upload实现为接受文件的操作,使用Microsoft.AspNetCore.Http命名空间中提供的IFormFile接口:

1 [HttpPost]
2 public IActionResult Upload(IFormFile file)
3 {
4     // ...
5     return Ok();
6 }

   三、如果将断点放在Upload方法中,则会看到有关所选文件的元数据:

   四、安装ImageSharp。我们将安装一个非常棒的替代品 ImageSharp:

 Install-Package SixLabors.ImageSharp -IncludePrereleas 

   ImageSharp目前处于测试阶段,但效果很好。 ImageSharp具有一个Image类,该类在很多方面都类似于WebImage。 它接受发布的文件作为流:

 using var image = Image.Load(file.OpenReadStream());

   五、一旦获得图像的实例,就可以使用Mutate方法开始对其进行操作。 比如将图像调整为固定大小:

 image.Mutate(x => x.Resize(256, 256));

   最后,我们可以将图像保存到流或文件中:

 image.Save("filename");

完整的Upload方法代码如下:

1 [HttpPost]
2 public IActionResult Upload(IFormFile file)
3 {
4     using var image = Image.Load(file.OpenReadStream());
5     image.Mutate(x => x.Resize(256, 256));
6     image.Save("...");
7     return Ok();
8 }

 

 

 

Tags: , , , , , ,

IT技术

Add comment

  Country flag

biuquote
微笑得意调皮害羞酷大笑惊讶发呆喜欢可怜尴尬闭嘴噘嘴皱眉伤心抓狂呕吐坏笑漫骂发怒
Loading