本文中如無特別說明
.NET
指 .NET 5或者更高版本,代碼一樣可用於 .NET Corehtml
調整圖片尺寸最經常使用的場景就是生成縮略圖,通常爲保持縱橫比縮小,若是圖片放大會使圖片變得模糊,若是確實有這方面的需求,能夠尋找開源的AI放大圖片的方法。git
開源地址:https://github.com/SixLabors/ImageSharpgithub
安裝:shell
dotnet add package SixLabors.ImageSharp
使用:性能
using var image = Image.Load<Rgba32>("<圖片路徑>"); image.Mutate(x=>x.Resize(50,0)); image.Save("<保存圖片路徑>");
其中調用 Resize(width,height)
方法時,若是設置了寬或者高,而後另外一個參數設置爲 0 ,那麼 ImageSharp 將會保持圖片縱橫比來進行調整大小。測試
還有更多的設置,好比設置圖片質量等,請參閱官方文檔:https://docs.sixlabors.com/articles/imagesharp/resize.htmlcode
使用此組件,可任意跨平臺,無需安裝外部依賴orm
此組件只能用於 .NET Frameworkhtm
開源地址:https://github.com/JimBobSquarePants/ImageProcessor圖片
安裝:
Install-Package ImageProcessor
添加程序集:System.Drawing
使用:
using (var imageFactory = new ImageFactory(true)) { imageFactory.Load("<圖片路徑>").Resize(new Size(50,50)).Save("<保存圖片路徑>"); }
開源地址:https://github.com/mono/SkiaSharp
安裝:
dotnet add package SkiaSharp
若在Linux出現依賴問題,能夠使用包SkiaSharp.NativeAssets.Linux.NoDependencies
使用:
var image = SKBitmap.Decode("<圖片路徑>"); //設置圖片新的size var newImg = image.Resize(new SKSizeI(50, 50), SKFilterQuality.Medium); using var fs=new FileStream("<保存圖片路徑>",FileMode.Create); newImg.Encode(fs,SKEncodedImageFormat.Png, 100); fs.Flush();
此組件是基於 C 的庫 libvips 來封裝的,性能高,資源佔用低。而且通過徹底測試,跨平臺且沒有內存泄漏。
開源地址:https://github.com/kleisauke/net-vips
安裝:
dotnet add package NetVips dotnet add package NetVips.Native
兩個包都須要安裝
使用:
var image = NetVips.Image.NewFromFile("<圖片路徑>"); var newImg = image.Resize(<圖片縮放比例>); newImg.WriteToFile("<保存圖片路徑>");
這裏的Resize()
方法設置的是縮放比例,如: 0.5。該組件額外提供了一個生成縮略圖的方法ThumbnailImage()
,能夠自定義寬高,若是隻穿寬度,那麼將保持縱橫比。
var image = NetVips.Image.NewFromFile("<圖片路徑>"); var newImg = image.ThumbnailImage(<圖片寬度>); newImg.WriteToFile("<保存圖片路徑>");