在 C# 中调整图像大小
在本教程中,我们将讨论在C#中调整图像大小的方法。
我们将带您完成整个过程,从加载原始图像到保存调整大小后的版本。
使用C#
中的Bitmap
类调整图像大小
Bitmap
类提供了许多在C#中使用图像的方法。Bitmap
类获取图像的像素数据。我们可以通过在Bitmap
类的构造函数中初始化Size
参数来调整图像的大小。
以下代码示例展示了如何在C#中使用Bitmap
类的构造函数调整图像大小。
using System;
using System.Drawing;
namespace resize_image {
class Program {
public static Image resizeImage(Image imgToResize, Size size) {
return (Image)(new Bitmap(imgToResize, size));
}
static void Main(string[] args) {
string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);
Bitmap imgbitmap = new Bitmap(img);
Image resizedImage = resizeImage(imgbitmap, new Size(200, 200));
}
}
}
这段代码演示了使用C#
中的Bitmap
类调整图像大小的完整过程。让我们来分解一下它是如何工作的。
步骤1:加载原始图像
首先,您需要使用Image.FromFile
方法加载原始图像。请确保将"C:\\Images\\img1.jpg"
替换为您自己图像文件的路径。
string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);
步骤2:将图像转换为位图
接下来,您将加载的图像转换为Bitmap
对象。这一步是执行调整大小操作所必需的。
Bitmap imgBitmap = new Bitmap(img);
步骤3:调整图像大小
现在是调整大小的部分。ResizeImage
函数接受Bitmap
对象和所需的大小(new Size(200, 200)
),并返回调整大小后的图像。
Image resizedImage = ResizeImage(imgBitmap, new Size(200, 200));
步骤4:保存调整大小后的图像
最后,您可以使用Save
方法将调整大小后的图像保存到文件中。在此示例中,调整大小后的图像保存为"resized.jpg"
。您可以通过更改文件扩展名(例如.jpg
、.png
、.bmp
)选择保存图像的格式。
resizedImage.Save("resized.jpg");
使用C#
中的Graphics.DrawImage()
函数调整图像大小
Graphics.DrawImage()
函数在C#中指定位置和指定尺寸内绘制图像。使用此方法,我们可以消除调整图像大小的许多缺点。以下代码示例展示了如何在C#中使用Graphics.DrawImage()
函数调整图像大小。
using System;
using System.Drawing;
namespace resize_image {
class Program {
public static Image resizeImage(Image image, int width, int height) {
var destinationRect = new Rectangle(0, 0, width, height);
var destinationImage = new Bitmap(width, height);
destinationImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);
using (var graphics = Graphics.FromImage(destinationImage)) {
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.CompositingQuality = CompositingQuality.HighQuality;
using (var wrapMode = new ImageAttributes()) {
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
graphics.DrawImage(image, destinationRect, 0, 0, image.Width, image.Height,
GraphicsUnit.Pixel, wrapMode);
}
}
return (Image)destinationImage;
}
static void Main(string[] args) {
string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);
Bitmap imgbitmap = new Bitmap(img);
Image resizedImage = resizeImage(imgbitmap, new Size(200, 200));
}
}
}
让我们来分解一下它是如何工作的。
步骤1:加载原始图像
首先,您需要使用Image.FromFile
加载原始图像。请确保将"C:\\Images\\img1.jpg"
替换为您自己图像文件的路径。
string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);
步骤2:创建目标位图
创建一个目标Bitmap
对象,用于保存调整大小后的图像。使用SetResolution
将其分辨率设置为与原始图像相匹配。
destinationImage.SetResolution()
函数 会保持图像的 DPI,无论其实际大小如何。
var destinationRect = new Rectangle(0, 0, width, height);
var destinationImage = new Bitmap(width, height);
destinationImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);
第三步:调整图像大小
现在,我们使用Graphics.FromImage
来获得与目标Bitmap
相关联的Graphics
对象。我们设置合成模式和质量以获得最佳结果。
using (var graphics = Graphics.FromImage(destinationImage)) {
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.CompositingQuality = CompositingQuality.HighQuality;
using (var wrapMode = new ImageAttributes()) {
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
graphics.DrawImage(image, destinationRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel,
wrapMode);
}
}
graphics.CompositingMode = CompositingMode.SourceCopy
属性 指定当呈现颜色时,其会覆盖背景颜色。
graphics.CompositingQuality = CompositingQuality.HighQuality
属性 指定我们只希望呈现高质量的图像。
wrapMode.SetWrapMode(WrapMode.TileFlipXY)
函数 避免图像边框周围出现残影。
第四步:保存调整大小后的图像
最后,您可以使用 Save
方法将调整大小后的图像保存到文件中。在这个例子中,调整大小后的图像保存为 "resized.jpg"
。您可以通过更改文件扩展名(例如 .jpg
, .png
, .bmp
)来选择保存图像的格式。
resizedImage.Save("resized.jpg");
结论
调整图像大小是软件开发中的常见任务,C# 提供了多种方法来实现此目的。在本文中,我们重点介绍了使用 Bitmap
类调整图像大小的方法。我们逐步讲解了从加载原始图像到保存调整大小版本的整个过程。
相关文章
在 C# 中发出 HTTP POST Web 请求
发布时间:2024/02/04 浏览次数:93 分类:编程语言
-
在 C# 中,可以使用 3 种主要方法来发出 HTTP POST Web 请求:WebClient 类,HttpWebRequest 类和 HttpClient 类。本教程将讨论在 C# 中发出 HTTP POST Web 请求的方法。使用 C# 中的 WebClient 类发出 HTTP POST Web 请求
在 C# 中运行命令提示符命令
发布时间:2024/02/04 浏览次数:112 分类:编程语言
-
Process 类可用于在 C# 中运行命令提示符命令。在 C# 中使用 Process.Start() 函数运行命令提示符命令
在 C# 中将双精度值四舍五入为整数值
发布时间:2024/02/03 浏览次数:84 分类:编程语言
-
Math.Ceiling(),Math.Floor()和 Math.Round()函数有 3 种主要方法可用于在 C# 中将双精度值四舍五入为整数值。使用 C# 中的 Math.Ceiling() 函数将双精度值四舍五入为整数值
C# 中的 async 和 await
发布时间:2024/02/03 浏览次数:97 分类:编程语言
-
async 和 await 关键字用于 C# 中的异步编程。C# 中的异步编程 如果同步应用程序中有任何进程被阻止,则整个应用程序将被阻止并停止响应
在 Mac OS 上设置 C#
发布时间:2024/02/03 浏览次数:135 分类:编程语言
-
在本文中,了解设置 C# 语言以在 Mac OS 上进行开发的过程。本文将演示 Mac OS 上 C# 语言的完整设置和基本语法。在 Mac OS 上安装和设置 C#
在 C# 中将函数作为参数传递
发布时间:2024/02/03 浏览次数:192 分类:编程语言
-
我们可以使用 2 种主要方法将函数作为参数传递给 C# 中的另一个函数,func<>委托和 Action<>委托。
在 C# 中创建内联函数
发布时间:2024/02/03 浏览次数:132 分类:编程语言
-
在 C# 中创建内联函数的方法主要有 3 种,分别是使用 lambda 表达式、使用 lambda 语句和使用局部函数。在 C# 中使用 Lambda 表达式创建内联函数 在 C 和 C++ 之类的编程语言中,内联函数用 inline 关
从 C# 中的函数返回多个值
发布时间:2024/02/03 浏览次数:88 分类:编程语言
-
有 3 种主要方法可用于从 C# 中的函数返回多个值,使用数组作为函数返回类型,使用类或结构体作为函数返回类型,以及使用 Tuple
类作为函数的返回类型。
C# 中的抽象函数与虚拟函数
发布时间:2024/02/03 浏览次数:121 分类:编程语言
-
抽象函数自身不提供任何定义,而虚拟函数在 C# 中具有默认定义。本教程将比较 C# 中的抽象函数和虚拟函数。C# 中的抽象函数 在 C# 中,抽象函数没有自己的定义。