在 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 类的构造函数调整了路径 C:\Images\img1.jpg
内图像 img
的大小。我们创建了位图 imgbitmap
来获取图像 img
的像素数据。我们将 imgbitmap
和 new Size(100, 100)
传递给 resizeImage()
函数。resizeImage()
使用指定的图像和大小创建一个新的位图,将其转换为图像数据类型,然后返回该值。resizeImage()
函数返回的值存储在 resizeImage()
图像内部。
使用 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));
}
}
}
在上面的代码中,destinationImage.SetResolution()
函数保持图像的 dpi,而不考虑其实际大小。graphics.CompositingMode = CompositingMode.SourceCopy
属性指定在渲染颜色时它将覆盖背景颜色。graphics.CompositingQuality = CompositingQuality.HighQuality
属性指定我们只希望渲染高质量的图像。wrapMode.SetWrapMode(WrapMode.TileFlipXY)
函数可以防止在图像边界周围出现鬼影。最后,graphics.DrawImage()
绘制具有指定尺寸的实际图像。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn