首页 >后端开发 >C++ >如何在保持最佳质量的同时,在C#中调整图像大小?

如何在保持最佳质量的同时,在C#中调整图像大小?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-31 01:06:10240浏览

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

在C#

>>

>

System.Drawing.Image Size Width> 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>
>中的高质量图像

>在C#中调整图像大小通常涉及使用

类的
  • >属性。 但是,简单的调整方法会损害图像质量。 为了获得最佳结果,请采用以下更复杂的方法:wrapMode.SetWrapMode(WrapMode.TileFlipXY)>
  • 此方法利用几个关键功能来确保高质量的调整:>
  • destImage.SetResolution(...)
  • >通过在缩放过程中镜像图像来消除图像边缘的伪影(hothing)。
  • 保留图像的DPI(每英寸点),对于降低尺寸或准备打印时保持质量至关重要。> CompositingQualityInterpolationMode高质量的图形设置:SmoothingModePixelOffsetModeHighQualityHighQualityBicubic
>均设置为

>或>用于上级渲染。>

destImage.Save(...)重要的考虑因素:

此函数本质上不能管理纵横比;您需要自己处理这一方面以防止失真。 此外,请记住,保存调整大小的图像(例如,使用)也会影响质量。咨询外部资源以获取图像节省格式和压缩级别的最佳实践。>

以上是如何在保持最佳质量的同时,在C#中调整图像大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn