迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

在 C# 中调整图像大小

作者:迹忆客 最近更新:2024/02/01 浏览次数:

在本教程中,我们将讨论在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 类调整图像大小的方法。我们逐步讲解了从加载原始图像到保存调整大小版本的整个过程。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 C# 中发出 HTTP POST Web 请求

发布时间:2024/02/04 浏览次数:131 分类:编程语言

在 C# 中,可以使用 3 种主要方法来发出 HTTP POST Web 请求:WebClient 类,HttpWebRequest 类和 HttpClient 类。本教程将讨论在 C# 中发出 HTTP POST Web 请求的方法。使用 C# 中的 WebClient 类发出 HTTP POST Web 请求

在 C# 中下载图片

发布时间:2024/02/04 浏览次数:138 分类:编程语言

有 3 种主要方法可用于下载 C# 中的图片,WebClient.DownloadFile()函数,Bitmap 类和 Image.FromStream()函数。在 C# 中使用 WebClient 类下载图片 WebClient 类提供了用于向 C# 中的 URL 发送数据和从 URL 接收数据

在 C# 中使用秒表

发布时间:2024/02/04 浏览次数:139 分类:编程语言

我们可以使用 Stopwatch 类来计算 C# 中的经过时间。使用 C# 中的秒表类计算经过时间 Stopwatch 类在 C# 中准确测量经过的时间。

在 C# 中获取可执行路径

发布时间:2024/02/04 浏览次数:200 分类:编程语言

有 3 种主要方法可用于获取 C# 中程序的可执行路径,即 Assembly 类,AppDomain 类和 Path 类。本教程将介绍获取 C# 代码的可执行路径的方法。使用 C# 中的 Assembly 类获取可执行路径

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便