Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengubah Saiz Imej secara Proporsional dengan Kekangan MaxHeight dan MaxWidth dalam C#?

Bagaimana untuk Mengubah Saiz Imej secara Proporsional dengan Kekangan MaxHeight dan MaxWidth dalam C#?

Linda Hamilton
Lepaskan: 2025-01-06 13:55:40
asal
836 orang telah melayarinya

How to Proportionally Resize Images with MaxHeight and MaxWidth Constraints in C#?

Mengubah Saiz Imej Secara Berkadaran dengan Kekangan MaxHeight dan MaxWidth

Mengekalkan nisbah bidang sambil mengubah saiz imej dalam kekangan yang ditentukan adalah keperluan biasa dalam pelbagai aplikasi. Menggunakan System.Drawing.Image, anda boleh mengubah saiz imej secara berkadar sambil memastikan ia kekal dalam had lebar dan ketinggian maksimum.

Masalah:

Jika lebar atau ketinggian imej melebihi maksimum yang ditentukan, ia perlu diubah saiz secara berkadar. Walau bagaimanapun, selepas mengubah saiz, adalah penting untuk memastikan bahawa lebar atau tinggi tidak melebihi had maksimum. Imej hendaklah diubah saiznya sehingga ia muat dalam dimensi maksimum sambil mengekalkan nisbah aspek asal.

Penyelesaian:

Kod C# yang disediakan menunjukkan cara untuk mencapai ini:

public static void Test()
{
    using (var image = Image.FromFile(@"c:\logo.png"))
    using (var newImage = ScaleImage(image, 300, 400))
    {
        newImage.Save(@"c:\test.png", ImageFormat.Png);
    }
}

public static Image ScaleImage(Image image, int maxWidth, int maxHeight)
{
    var ratioX = (double)maxWidth / image.Width;
    var ratioY = (double)maxHeight / image.Height;
    var ratio = Math.Min(ratioX, ratioY);

    var newWidth = (int)(image.Width * ratio);
    var newHeight = (int)(image.Height * ratio);

    var newImage = new Bitmap(newWidth, newHeight);

    using (var graphics = Graphics.FromImage(newImage))
        graphics.DrawImage(image, 0, 0, newWidth, newHeight);

    return newImage;
}
Salin selepas log masuk

Penjelasan:

  • Kaedah ScaleImage mengambil imej, lebar maksimum dan ketinggian maksimum sebagai parameter.
  • Ia mengira nisbah lebar dan tinggi maksimum kepada lebar dan tinggi imej asal.
  • The nilai nisbah minimum digunakan untuk mengubah saiz imej secara berkadar.
  • Lebar dan ketinggian baharu dikira berdasarkan nisbah.
  • Peta Bit dengan dimensi baharu dicipta dan imej asal dilukis ke atasnya dengan dimensi yang ditentukan.
  • Imej saiz semula berkadar yang terhasil ialah dikembalikan.

Dengan menggunakan teknik ini, anda boleh mengubah saiz imej sambil mengekalkan nisbah bidangnya, memastikan ia muat dalam dimensi maksimum yang ditentukan.

Atas ialah kandungan terperinci Bagaimana untuk Mengubah Saiz Imej secara Proporsional dengan Kekangan MaxHeight dan MaxWidth dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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