在 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
的畫素資料。我們將 imgbitmap
和 new 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()
繪製具有指定尺寸的實際影象。
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