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>
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.
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!