Rumah >pembangunan bahagian belakang >C++ >Bagaimana cara mengubah saiz imej di C# untuk berkualiti tinggi?

Bagaimana cara mengubah saiz imej di C# untuk berkualiti tinggi?

DDD
DDDasal
2025-01-31 01:16:08319semak imbas

How to Resize Images in C# for High Quality?

C#High -Quality Image Zoom Method

Tidak mudah untuk menyesuaikan saiz imej semasa berjalan di C#. Walaupun mempunyai sifat ,

dan

, penetapan atribut ini tidak menyesuaikan saiz imej. System.Drawing.Image Size Untuk menyesuaikan saiz imej, anda perlu menggunakan saiz baru untuk membuat objek Width baru dan menarik imej asal ke objek. Anda boleh menggunakan kod berikut untuk dilaksanakan: Height

Walau bagaimanapun, kaedah ini akan membawa kepada penurunan kualiti imej. Untuk mencapai zoom berkualiti tinggi, kelas

diperlukan. Cara mengendalikan contoh di bawah: Bitmap

<code class="language-csharp">Bitmap objBitmap = new Bitmap(objImage, new Size(227, 171));</code>
Fungsi ini menyediakan zoom berkualiti tinggi dengan cara berikut:

Graphics

set ke
<code class="language-csharp">/// <summary>
/// 将图像调整为指定宽度和高度。
/// </summary>
/// <param name="image">要调整大小的图像。</param>
/// <param name="width">要调整到的宽度。</param>
/// <param name="height">要调整到的高度。</param>
/// <returns>调整大小后的图像。</returns>
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);

    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>
untuk mengelakkan bayang -bayang berat di sekitar sempadan imej.

Tetapkan imej sasaran
    untuk menyimpan dpi.
  • WrapMode Gunakan tetapan yang tinggi -kualiti TileFlipXY,
  • ,
  • dan Resolution tetapan.
  • Compositing Pertimbangan lain termasuk nisbah membujur imej (dikhaskan untuk pembaca sebagai latihan), dan perangkap di mana imej zoom dalam imej apabila menyimpan imej. Interpolation

Atas ialah kandungan terperinci Bagaimana cara mengubah saiz imej di C# untuk berkualiti tinggi?. 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