Heim >Backend-Entwicklung >C++ >Wie kann ich Bilder effizient in C#ändern?

Wie kann ich Bilder effizient in C#ändern?

Susan Sarandon
Susan SarandonOriginal
2025-01-31 00:56:08291Durchsuche

Methode der hohen Effizienz C#Bildgröße

<:> Frage:

System.Drawing.image -Klasse bietet Größe, Breite und Höhe get () Eigenschaften. Aber wie kann man die Größe des Bildobjekts beim Ausführen von C#anpassen?

Lösung:

Verwenden Sie die schwere Last mit Size (), um ein neues Bild zu erstellen.

Die folgenden Funktionen können jedoch verwendet werden, um eine Anpassungsgröße von höherer Qualität zu erzielen:

<code class="language-csharp">// objImage 是原始 Image
Bitmap objBitmap = new Bitmap(objImage, new Size(227, 171));</code>

Andere Details:

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

Verhindern Sie transparente Pixel außerhalb der Grenzgrenze, was das angepasste Bild beeinflusst.

Halten von DPI hat nichts mit der Größe der Physik zu tun, und die Qualität kann verbessert werden, wenn die Größe des Bildes oder des Drucks reduziert wird.
  • Verschiedene Kompositions-, Interpolations-, Glättungs- und PixeloffsetMode -Steuerelemente, um die Renderungsqualität großer und kleiner Bilder anzupassen. wrapMode.SetWrapMode(WrapMode.TileFlipXY)
  • Diese Funktion hält das Verarbeitungsverhältnis nicht und lässt es Entwicklern für sich selbst entscheiden.
  • destImage.SetResolution

Das obige ist der detaillierte Inhalt vonWie kann ich Bilder effizient in C#ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn