在 C# 中調整影象大小

Muhammad Maisam Abbas 2024年2月16日
  1. 使用C#中的Bitmap類調整圖像大小
  2. 使用C#中的Graphics.DrawImage()函數調整圖像大小
  3. 總結
在 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);

步驟 3: 調整圖片大小

現在,我們使用 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) 函式 避免圖片邊界產生殘影。

步驟 4: 儲存調整大小後的圖片

最後,您可以使用 Save 方法將調整大小後的圖片儲存到檔案中。在此範例中,調整大小後的圖片儲存為 "resized.jpg"。您可以透過更改檔案副檔名(例如 .jpg.png.bmp)選擇儲存的圖片格式。

resizedImage.Save("resized.jpg");

總結

調整圖片大小在軟體開發中是一項常見的任務,而 C# 提供了多種方法來實現這一目標。在本文中,我們專注於使用 Bitmap 類別來調整圖片大小的方法。我們從載入原始圖片到儲存調整大小後的版本,逐步介紹了整個過程。

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