在 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
類別來調整圖片大小的方法。我們從載入原始圖片到儲存調整大小後的版本,逐步介紹了整個過程。
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