查看原文
其他

.NET 调整图片尺寸(Resize)各种方法

DotNet 2021-09-23

(给DotNet加星标,提升.Net技能

转自:晓晨Master
cnblogs.com/stulzq/p/14283068.html

本文中如无特别说明 .NET.NET 5或者更高版本代码同样可用于.NET Core


前言


调整图片尺寸最常用的场景就是生成缩略图,一般为保持纵横比缩小,如果图片放大会使图片变得模糊,如果确实有这方面的需求,可以寻找开源的AI放大图片的方法。


一、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("<保存图片路径>");


其中调用 Resize(width,height) 方法时,如果设置了宽或者高,然后另一个参数设置为 0 ,那么 ImageSharp 将会保持图片纵横比来进行调整大小。


还有更多的设置,比如设置图片质量等,请参阅官方文档:https://docs.sixlabors.com/articles/imagesharp/resize.html


使用此组件,可任意跨平台,无需安装外部依赖


二、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("<保存图片路径>");
}


三、SkiaSharp


开源地址: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();


四、NetVips


此组件是基于 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("<保存图片路径>");


- EOF -


推荐阅读  点击标题可跳转

.NET Core急速接入第三方登录 不看后悔

C#中的null包容运算符"!":用法和注意事项

C# + Selenium + ChromeDriver 爬取网页


看完本文有收获?请转发分享给更多人

推荐关注「DotNet」,提升.Net技能 

点赞和在看就是最大的支持❤️

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存