使用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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM