Rumah > pembangunan bahagian belakang > C++ > Bagaimana cara mengubah saiz imej di C# sambil mengekalkan kualiti yang optimum?

Bagaimana cara mengubah saiz imej di C# sambil mengekalkan kualiti yang optimum?

Mary-Kate Olsen
Lepaskan: 2025-01-31 01:06:10
asal
238 orang telah melayarinya

How to Resize Images in C# While Maintaining Optimal Quality?

saiz semula imej berkualiti tinggi dalam C#

Saiz semula imej dalam C# sering melibatkan menggunakan sifat

System.Drawing.Image, Size, dan Width sifat. Walau bagaimanapun, pendekatan saiz semula mudah boleh menjejaskan kualiti imej. Untuk hasil yang optimum, menggunakan kaedah yang lebih canggih seperti yang di bawah: Height

<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);

    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>
Salin selepas log masuk
Kaedah ini memanfaatkan beberapa ciri utama untuk memastikan saiz semula berkualiti tinggi:

  • : wrapMode.SetWrapMode(WrapMode.TileFlipXY) menghapuskan artifak (hantu) pada tepi imej dengan mencerminkan imej semasa proses penskalaan.
  • : destImage.SetResolution(...) Memelihara DPI imej (titik per inci), penting untuk mengekalkan kualiti apabila mengurangkan saiz atau bersiap untuk cetak.
  • Tetapan grafik berkualiti tinggi: , CompositingQuality, InterpolationMode, dan SmoothingMode semuanya ditetapkan untuk PixelOffsetMode atau HighQuality untuk rendering unggul. HighQualityBicubic

Pertimbangan penting:

Fungsi ini tidak semestinya menguruskan nisbah aspek; Anda perlu mengendalikan aspek itu untuk mengelakkan gangguan. Tambahan pula, ingatlah bahawa penjimatan imej yang disusun semula (mis., Menggunakan

) juga boleh memberi kesan kepada kualiti. Rujuk sumber luaran untuk amalan terbaik dalam format penjimatan imej dan tahap mampatan. destImage.Save(...)

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

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan