本文中如无特别说明 .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. windows 远程连接报错

    在windows7上或者windows10上远程连接服务器报错("连接错误"),试了网上的方法,发现是服务器安装ssl证书关闭了ssh服务,开启ssh服务后,重启电脑就可以解决这个 ...

  2. B树——插入和删除

    B树--插入和删除 B树的插入 5阶B数--结点关键字个数向上取整m/2-1≤n≤m-1 即2≤n≤4 连续插入5个元素后,超出来了. 在插入key后,若导致原结点关键字数超过上限,则从中间位置(m/ ...

  3. JavaSE19-IO特殊流和Properties集合

    1.IO特殊操作流 1.1 标准输入流 System类中有两个静态的成员变量 public static final InputStream in:标准输入流.通常该流对应于键盘输入或由主机环境或用户 ...

  4. EasyExcel导入

    记录摸鱼的一天 技术栈:spring boot2.x+mybatis plus+easyExcel 2.2.6 生成简单的实体类等等等等 导入easyExcel的依赖 实体类 编写服务层 import ...

  5. C++ 中使用 PRId64

    同一份代码,Ubuntu 14.04.1 编译没有问题,centos 7 上编译提示错误: error: expected ')' before 'PRId64' 这里两个地址说得很清楚了: http ...

  6. PHP MySQL 快速导入10万条数据

    项目背景 数据来源:所有数据均为外部导入,最大数据量在10w+ 输出数据:导出经过业务处理之后的数据 使用框架:fastadmin 涉及的问题: 1.数据读取 2.数据保存 使用数据:10w+ 解决方 ...

  7. Hbase系列文章

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

  8. gcc编译阶段打印宏定义的内容

    背景 总所周知,代码量稍微大一点的C/C++项目的一些宏定义都会比较复杂,有时候会嵌套多个#if/#else判断分支和一堆#ifdef/#undef让你单看代码的话很难判断出宏定义的具体内容. 如果有 ...

  9. 走进 Python 类的内部

    这篇文章和大家一起聊一聊 Python 3.8 中类和对象背后的一些概念和实现原理,主要尝试解释 Python 类和对象属性的存储,函数和方法,描述器,对象内存占用的优化支持,以及继承与属性查找等相关 ...

  10. Bitmap 图像灰度变换原理浅析

    上篇文章<拥抱 C/C++ : Android JNI 的使用>里提到调用 native 方法直接修改 bitmap 像素缓冲区,从而实现将彩色图片显示为灰度图片的方法.这篇文章将介绍该操 ...