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

前言

调整图片尺寸最常用的场景就是生成缩略图,一般为保持纵横比缩小,如果图片放大会使图片变得模糊,如果确实有这方面的需求,可以寻找开源的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("<保存图片路径>");

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

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

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

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出现依赖问题,可以使用包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();

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

.NET 调整图片尺寸(Resize)各种方法的更多相关文章

  1. iOS 调整图片尺寸,告诉你的UI,别问我尺寸!我要最大的

    如果UI问你“这个图片你要多大尺寸的?”,你该怎么回答呢? 为了不让图片因拉伸或压缩而变形或模糊,请精确告诉UI图片的比例,至于图片的分辨率,不必要要求太严,但是最低要求是要让最大的屏幕不会出现前面描 ...

  2. markdown中设置、调整图片尺寸

    使用百分比描述尺寸 <img src="https://img2018.cnblogs.com/blog/1122471/201902/1122471-2019022218575673 ...

  3. PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转

    [强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...

  4. 图片尺寸批量resize的matlab并行代码

    在caffe ImageNet例子中有对图片进行resize的部分,文中使用的是linux shell脚本命令: for name in /path/to/imagenet/val/*.JPEG; d ...

  5. javascript加载图片获取图片尺寸信息方法

    如果你遇到不方便从服务器取图片尺寸信息的话,用下面代码就很方便了. // 更新: // 05.27: 1.保证回调执行顺序:error > ready > load:2.回调函数this指 ...

  6. OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    这篇已经写得很好,真心给作者点个赞.题目都是直接转过来的,直接去看吧. Reference Link : http://blog.csdn.net/poem_qianmo/article/detail ...

  7. 【OpenCV新手教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  8. 学习 opencv---(12)OpenCV 图像金字塔:高斯金字塔,拉普拉斯金字塔与图片尺寸缩放

    在这篇文章里,我们一起学习下 图像金字塔 的一些基本概念,如何使用OpenCV函数pyrUp和pyrDown 对图像进行向上和向下采样,以及了解专门用于缩放图像尺寸的resize函数的用法.此博文一共 ...

  9. 使用python进行图像处理-调整图片大小

    python有一个图像处理库——PIL,可以处理图像文件.PIL提供了功能丰富的方法,比如格式转换.旋转.裁剪.改变尺寸.像素处理.图片合并等等等等,非常强大. 举个简单的例子,调整图片的大小: im ...

随机推荐

  1. 题解-洛谷P6788 「EZEC-3」四月樱花

    题面 洛谷P6788 「EZEC-3」四月樱花 给定 \(n,p\),求: \[ans=\left(\prod_{x=1}^n\prod_{y|x}\frac{y^{d(y)}}{\prod_{z|y ...

  2. git相关操作

    git相关命令 基本操作 git init git add xxx git commit -m "first commit" git tag -a V1.0 -m '我的标签' g ...

  3. 性能测试工具 jmeter 分布式压力测试实操

    性能测试工具 jmeter 分布式压力测试实操 本文在Non-GUI Mode下进行,准备好三台有jdk环境,linux操作系统,同一局域网测试机器,运行两台slave,一台master机器,进行分布 ...

  4. java.lang.NoClassDefFoundError: org/I0Itec/zkclient/IZkStateListener

    spark streaming 读 kafka 报错 java.lang.NoClassDefFoundError: org/I0Itec/zkclient/IZkStateListener java ...

  5. js上 十九、综合案例

    十九.综合案例 题目一: 封装一个函数equal(a1,a2),传入两个一维数组,判断两个数组是否包含相同的元素,如果相等,函数的返回值为true, 不相等,函数的返回值为false 1)例:arr1 ...

  6. [OI笔记]后缀自动机

    本来没打算写的,不过想想看后缀自动机的理论看了两三天了才有点懂(我太傻了)-下周期末考的话大概要去复习一下文化课感觉回来又要忘得差不多,还是开篇blog记一下好了. 相关的资料: cls当年的课件:2 ...

  7. 任务队列--nodejs

    很多项目可能都会涉及到任务队列来进行任务处理和维护的,那么需要使用到redis或者第三方库(使用redis)来实现任务队列,甚至需要控制并发量,但是对于saas部署来说使用redis可能会比较麻烦和成 ...

  8. 使用Canvas绘制分享海报

    这几天接到一个需求,需要将一个邀请链接转换为一个带有二维码并且能够分享出去的海报图,网上找了很多的方法,也踩了不少的坑,希望大家遇到类似的需求能够少走弯路.. 具体效果图如下: 效果图 首先我采用了 ...

  9. root密码忘记了,怎么办?

    root是管理员使用的超级用户,如果密码忘记了,可以使用以下两种方法修改. 方法一: 进入单用户模式下进行密码修改 步骤1:重启系统,在系统进入3秒启动阶段,快速点击键盘上任意键可以取消默认进入系统状 ...

  10. 微服务 - 服务注册发现(三)Consule

    Consul 集群 在consul方案中,每个提供服务的节点上都要部署和运行consul的agent,所有运行consul agent节点的集合构成consul cluster.consul agen ...