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

posted at 2021.1.25 13: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技术

添加评论

  Country flag

biuquote
  • 评论
  • 在线预览
Loading