.NET 调整图片尺寸(Resize)各种方法
轉(zhuǎn)自:曉晨Master
本文中如無特別說明?.NET?指 .NET 5或者更高版本,代碼同樣可用于 .NET Core
前言
調(diào)整圖片尺寸最常用的場景就是生成縮略圖,一般為保持縱橫比縮小,如果圖片放大會(huì)使圖片變得模糊,如果確實(shí)有這方面的需求,可以尋找開源的AI放大圖片的方法。
1.ImageSharp
開源地址:https://github.com/SixLabors/ImageSharp
安裝:
dotnet add package SixLabors.ImageSharp使用:
using var image = Image.Load<Rgba32>("<圖片路徑>"); image.Mutate(x=>x.Resize(50,0)); image.Save("<保存圖片路徑>");其中調(diào)用?Resize(width,height)?方法時(shí),如果設(shè)置了寬或者高,然后另一個(gè)參數(shù)設(shè)置為 0 ,那么 ImageSharp 將會(huì)保持圖片縱橫比來進(jìn)行調(diào)整大小。
還有更多的設(shè)置,比如設(shè)置圖片質(zhì)量等,請參閱官方文檔:https://docs.sixlabors.com/articles/imagesharp/resize.html
使用此組件,可任意跨平臺(tái),無需安裝外部依賴
2.ImageProcessor
此組件只能用于?.NET Framework
開源地址:https://github.com/JimBobSquarePants/ImageProcessor
安裝:
Install-Package ImageProcessor添加程序集:System.Drawing
使用:
using (var imageFactory = new ImageFactory(true)) {imageFactory.Load("<圖片路徑>").Resize(new Size(50,50)).Save("<保存圖片路徑>"); }3.SkiaSharp
開源地址:https://github.com/mono/SkiaSharp
安裝:
dotnet add package SkiaSharp若在Linux出現(xiàn)依賴問題,可以使用包SkiaSharp.NativeAssets.Linux.NoDependencies
使用:
var image = SKBitmap.Decode("<圖片路徑>"); //設(shè)置圖片新的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();4.NetVips
此組件是基于 C 的庫?libvips?來封裝的,性能高,資源占用低。并且經(jīng)過完全測試,跨平臺(tái)且沒有內(nèi)存泄漏。
開源地址:https://github.com/kleisauke/net-vips
安裝:
dotnet add package NetVips dotnet add package NetVips.Native兩個(gè)包都需要安裝
使用:
var image = NetVips.Image.NewFromFile("<圖片路徑>"); var newImg = image.Resize(<圖片縮放比例>); newImg.WriteToFile("<保存圖片路徑>");這里的Resize()方法設(shè)置的是縮放比例,如: 0.5。該組件額外提供了一個(gè)生成縮略圖的方法ThumbnailImage(),可以自定義寬高,如果只穿寬度,那么將保持縱橫比。
var image = NetVips.Image.NewFromFile("<圖片路徑>"); var newImg = image.ThumbnailImage(<圖片寬度>); newImg.WriteToFile("<保存圖片路徑>");總結(jié)
以上是生活随笔為你收集整理的.NET 调整图片尺寸(Resize)各种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uni-app微信小程序登录;uni-a
- 下一篇: 阿里数据库内核月报:2017年04月