• 使用ASP.NET Core和ImageSharp上传图像并调整其大小


    在将我们的Web应用程序迁移到ASP.NET Core时,我不得不为用户找到一种新的方式来上传和调整个人资料照片。 我们在ASP.NET MVC中使用了WebImage类,但不幸的是,Core中没有该类。 在这篇文章中,我将向您展示如何使用ASP.NET Core和ImageSharp库中的文件支持解决该问题。

    使用ASP.NET Core和ImageSharp上传图像并调整其大小

    我们面对现实吧。 虽然 ASP.NET Core 已经是一个不错的 web 框架,但是仍然缺少一些东西(或者故意遗漏以便为其他选择腾出空间)。 调整图像的大小就是这样一个功能 .Net 中的 WebImage 类是一个相当令人印象深刻的小帮助器,当需要允许用户上传、图像处理等时,它可以满足大多数需求。 但是正如前面提到的,WebImage 还没有移植到 ASP.NET Core 。

    让我们先来看看 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方法中,则会看到有关所选文件的元数据:

    现在是调整大小的部分。 既然我们不再能够访问 WebImage 类,我将安装一个非常棒的替代品 ImageSharp:

    Install-Package SixLabors.ImageSharp -IncludePrerelease

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

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

    一旦获得图像的实例,就可以使用Mutate方法开始对其进行操作。 对于这篇文章,我想将图像调整为固定大小:

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

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

    image.Save("filename");

    同样,使用Image类有很多可能性,因此请查阅文档。

    这是完整的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 }
  • 相关阅读:
    Linux LAMP架构搭建
    Linux 系统版本查询
    Linux 安装本地 yum源
    Linux 虚拟机安装vmware tools
    随记分页码
    flexigrid 修改json格式
    Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案
    web api 文档声明
    android UI
    Sending HTML Form Data
  • 原文地址:https://www.cnblogs.com/bisslot/p/12679170.html
Copyright © 2020-2023  润新知