迹忆客 专注技术分享

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

在 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 浏览次数:93 分类:编程语言

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

在 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 浏览次数: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# 中,抽象函数没有自己的定义。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便