在 C# 中调整图像大小

Muhammad Maisam Abbas 2023年1月30日 2021年3月21日
  1. 使用 C# 中的 Bitmap 类调整图像大小
  2. 使用 C# 中的 Graphics.DrawImage() 函数调整图像大小
在 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 的像素数据。我们将 imgbitmapnew 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() 绘制具有指定尺寸的实际图像。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

相关文章 - Csharp Image