Animated PNG (Portable Network Graphics) ist eine Erweiterung des PNG-Formats zur Einbindung der Animationen. Genau wie animierte GIFs wird das APNG Format verwendet, um die Animationen zu präsentieren. Ein Vorteil von APNG gegenüber GIF ist, dass es 24-Bit-Transparenz unterstützt, während GIF nur 8-Bit unterstützt. Darüber hinaus bietet APNG im Vergleich zu einem animierten GIF eine flüssigere Animation. In diesem Artikel zeige ich Ihnen, wie Sie die animierten PNG Bilder (APNG) aus einem Bild oder einer mehrseitigen TIFF Datei erstellen und APNG mithilfe von C# (oder VB.NET) programmgesteuert in animiertes GIF exportieren.

.NET API für animierte PNG Bilder

Aspose bietet seine .NET Imaging API zum Erstellen oder Bearbeiten beliebter Bildformate, einschließlich animierter PNG, mit C# oder VB.NET. Wir nutzen die Funktionen von Aspose.Imaging for .NET, um animierte PNG Bilder zu erstellen oder zu exportieren. Sie können die DLL der API entweder herunterladen oder sie mit NuGet in Ihrer .NET Anwendung installieren.

PM> Install-Package Aspose.Imaging

Animiertes PNG aus einem Bild mit C# erstellen

Mit Aspose.Imaging for .NET können Sie ein animiertes PNG aus einem einseitigen Bild wie PNG erstellen, indem Sie die benutzerdefinierte Animation und Framedauer festlegen. Im Folgenden sind die Schritte zum Ausführen dieses Vorgangs aufgeführt.

Das folgende Codebeispiel zeigt, wie Sie mit C# ein animiertes PNG (APNG) aus einem PNG Bild erstellen.

using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using Aspose.Imaging.FileFormats.Apng;

const int AnimationDuration = 1000; // 1 s
const int FrameDuration = 70; // 70 ms
using (RasterImage sourceImage = (RasterImage)Image.Load("not_animated.png"))
{
    ApngOptions createOptions = new ApngOptions
    {
        Source = new FileCreateSource("raster_animation.png", false),
        DefaultFrameTime = (uint)FrameDuration,
        ColorType = PngColorType.TruecolorWithAlpha,
    };

    using (ApngImage apngImage = (ApngImage)Image.Create(
        createOptions,
        sourceImage.Width,
        sourceImage.Height))
    {
        int numOfFrames = AnimationDuration / FrameDuration;
        int numOfFrames2 = numOfFrames / 2;

        apngImage.RemoveAllFrames();

        // ersten Rahmen hinzufügen
        apngImage.AddFrame(sourceImage, FrameDuration);

        // Zwischenrahmen hinzufügen
        for (int frameIndex = 1; frameIndex < numOfFrames - 1; ++frameIndex)
        {
            apngImage.AddFrame(sourceImage, FrameDuration);
            ApngFrame lastFrame = (ApngFrame)apngImage.Pages[apngImage.PageCount - 1];
            float gamma = frameIndex >= numOfFrames2 ? numOfFrames - frameIndex - 1 : frameIndex;
            lastFrame.AdjustGamma(gamma);
        }

        // letzten Frame hinzufügen
        apngImage.AddFrame(sourceImage, FrameDuration);

        apngImage.Save();
    }
}

Animiertes PNG aus mehrseitigem Tiff mit C# erstellen

Sie können auch eine mehrseitige TIFF Datei verwenden, um das animierte PNG zu erstellen, indem Sie die gewünschte Framezeit festlegen. Im Folgenden sind die Schritte zum Erstellen von animiertem PNG aus einer TIFF Datei aufgeführt.

Das folgende Codebeispiel zeigt, wie Sie mit C# animiertes PNG aus einer TIFF Datei erstellen.

// Beispiel 4. Exportieren in das APNG Dateiformat aus einem anderen nicht animierten Format
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;

using (Image image = Image.Load("img4.tif")) {
    // Einrichten der Standard-Frame-Dauer
    image.Save("img4.tif.500ms.png", new ApngOptions() { DefaultFrameTime = 500 }); // 500 ms
    image.Save("img4.tif.250ms.png", new ApngOptions() { DefaultFrameTime = 250 }); // 250 ms
}

Quelle Tiff

Quell-Tiff

Animiertes PNG

TIFF in animiertes PNG

Exportieren Sie animiertes PNG in animiertes GIF mit C#

Sie können auch ein animiertes PNG Bild in ein entsprechendes animiertes GIF exportieren. Im Folgenden sind die Schritte zum Exportieren von APNG in GIF aufgeführt.

Das folgende Codebeispiel zeigt, wie Sie mit C# animiertes PNG in GIF exportieren.

using System.Diagnostics;
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using Aspose.Imaging.FileFormats.Apng;

using (Image image = Image.Load("elephant.png")) {
    // Überprüfen des Typs des geladenen Bildes
    Debug.Assert(image is ApngImage);
    // Speichern Sie im gleichen Format
    image.Save("elephant_same_format.png");
    // Exportieren Sie in das andere animierte Format
    image.Save("elephant.png.gif", new GifOptions());
}

Quelle animiertes PNG

Animiertes PNG Bild

Animiertes GIF

Animiertes PNG zu GIF C#

Fazit

In diesem Artikel haben Sie gelernt, wie Sie mit C# ein animiertes PNG aus verschiedenen Quellen erstellen. Die Schritt-für-Schritt-Anleitung und die Codebeispiele zeigten, wie Sie animiertes PNG aus einseitigem PNG und mehrseitigem TIFF erstellen und animiertes PNG mit C# in ein animiertes GIF exportieren. Weitere Informationen zum Bearbeiten von APNG Bildern finden Sie in der Dokumentation der API.

Siehe auch