在 C# 中調整影象大小

Muhammad Maisam Abbas 2023年1月30日 2021年3月21日
  1. 使用 C# 中的 Bitmap 類調整影象大小
  2. 使用 C# 中的 Graphics.DrawImage() 函式調整影象大小
在 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 的畫素資料。我們將 imgbitmapnew 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() 繪製具有指定尺寸的實際影象。

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