本文中如无特别说明 .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. Codeforces Edu Round 52 A-E

    A. Vasya and Chocolate 模拟题.数据会爆\(int\),要开\(long\) \(long\) #include <iostream> #include <cs ...

  2. 20分钟带你掌握JavaScript Promise和 Async/Await

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://www.freecodecamp.org/news/learn-promise-a ...

  3. CentOS 6.8内核版本升级

    1.查看当前版本 [root@www.linuxidc.com docker]# cat /etc/issue CentOS release 6.8 (Final) ​ Kernel \r on an ...

  4. Java8的Lambda表达式,你会不?

    目录 理解Lambda 基础语法 函数式接口 常用的函数式接口 消费型接口 供给型接口 断言型接口 函数型接口 方法引用 数组引用 构造器引用 总结 参考阅读 理解Lambda Lambda表达式可以 ...

  5. Hbase系列文章

    Hbase系列文章 HBase(一): c#访问hbase组件开发 HBase(二): c#访问HBase之股票行情Demo HBase(三): Azure HDInsigt HBase表数据导入本地 ...

  6. github无法访问解决方法

    windows 系统下找到目录 C:\Windows\System32\drivers\etc 打开 hosts 文件 添加以下配置 #github140.82.114.3 github.com 保存 ...

  7. SpringBoot执行原理

    目录 [Toc] 一.执行原理: 每个Spring Boot项目都有一个主程序启动类,在主程序启动类中有一个启动项目的main()方法, 在该方法中通过执行SpringApplication.run( ...

  8. 主数据管理(MDM)的6大层级简述,你不可不知的数据治理参考!

    前面我写了一篇关于对元数据和元数据管理的认知和理解的文章,有兴趣的朋友可以去看看.接下来我们讲一讲主数据管理(MDM). 主数据管理(MDM) 主数据是系统间共享数据,它是系统间信息交换的基准.主数据 ...

  9. 制作3D小汽车游戏(下)

    书接上回,这一节我们分模块说一说怎么写一个这样的游戏 1. 初始化场景.相机和渲染器 这几乎是绘制three必须做的事情,我们有两套场景和相机,一个是主场景和相机,另一个是小地图的场景和相机(用来俯视 ...

  10. Windows无法访问共享文件夹

    问题描述 今天打开vss连接代码,提示如下信息 解决办法 可行:重置登录用户信息 原博文 https://zhidao.baidu.com/question/1174230805440255699.h ...