Rumah >pembangunan bahagian belakang >C++ >Bagaimana cara mengubah saiz imej dengan cekap di C#?

Bagaimana cara mengubah saiz imej dengan cekap di C#?

Susan Sarandon
Susan Sarandonasal
2025-01-31 00:56:08247semak imbas

kaedah kecekapan tinggi C#saiz imej

<:> Soalan:

Sistem.Drawing.Image Kelas menyediakan saiz, lebar, dan ketinggian mendapatkan () sifat. Tetapi bagaimana untuk menyesuaikan saiz objek imej semasa berjalan di C#?

Penyelesaian:

Gunakan beban berat dengan saiz () untuk membuat imej baru.

Walau bagaimanapun, fungsi berikut boleh digunakan untuk mencapai saiz pelarasan kualiti yang lebih tinggi:

<code class="language-csharp">// objImage 是原始 Image
Bitmap objBitmap = new Bitmap(objImage, new Size(227, 171));</code>
Butiran lain:

<code class="language-csharp">public static Bitmap ResizeImage(Image image, int width, int height)
{
    // 设置目标矩形和图像
    var destRect = new Rectangle(0, 0, width, height);
    var destImage = new Bitmap(width, height);

    // 设置目标图像的分辨率
    destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);

    // 使用 Graphics 类绘制调整大小的图像
    using (var graphics = Graphics.FromImage(destImage))
    {
        graphics.CompositingMode = CompositingMode.SourceCopy;
        graphics.CompositingQuality = CompositingQuality.HighQuality;
        graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
        graphics.SmoothingMode = SmoothingMode.HighQuality;
        graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;

        // 设置环绕模式以防止图像边界周围出现重影
        using (var wrapMode = new ImageAttributes())
        {
            wrapMode.SetWrapMode(WrapMode.TileFlipXY);
            graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode);
        }
    }

    // 返回调整大小的图像
    return destImage;
}</code>

Mencegah piksel telus di luar sempadan sempadan, yang mempengaruhi imej yang diselaraskan. Holding DPI tidak ada kaitan dengan saiz fizik, dan kualiti dapat ditingkatkan apabila mengurangkan saiz imej atau percetakan.

    Pelbagai komposit, interpolasi, pelicinan, dan pixeloffsetMode set kawalan untuk menyesuaikan kualiti rendering imej besar dan kecil.
  • wrapMode.SetWrapMode(WrapMode.TileFlipXY) Fungsi ini tidak menyimpan nisbah pemprosesan dan meninggalkannya untuk pemaju untuk memutuskan sendiri.
  • destImage.SetResolution

Atas ialah kandungan terperinci Bagaimana cara mengubah saiz imej dengan cekap di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn