Rumah >pembangunan bahagian belakang >C++ >Bagaimana cara mengubah saiz imej dengan cekap di C#?
<:> 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.
<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.
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!