Animerad PNG(Portable Network Graphics) är ett tillägg till PNG-formatet för att införliva animationerna. Precis som animerade GIF-bilder används APNG-formatet för att presentera animationerna. En kant av APNG över GIF är att den stöder 24-bitars transparens medan GIF bara stöder 8-bitars. Dessutom ger APNG en smidigare animering jämfört med en animerad GIF. I den här artikeln kommer jag att visa dig hur du skapar de animerade PNG-bilderna (APNG) från en bild eller flersidig Tiff och exporterar APNG till animerad GIF programmatiskt med C# (eller VB.NET).

.NET API för animerade PNG-bilder

Aspose erbjuder sitt .NET Imaging API för att skapa eller manipulera populära bildformat inklusive animerad PNG med C# eller VB.NET. Vi kommer att utnyttja funktionerna i Aspose.Imaging för .NET för att skapa eller exportera animerade PNG-bilder. Du kan antingen ladda ner API:s DLL eller installera den i din .NET-applikation med NuGet.

PM> Install-Package Aspose.Imaging

Skapa animerad PNG från en bild med C#

Aspose.Imaging för .NET låter dig skapa en animerad PNG från en ensidig bild, t.ex. PNG, genom att ställa in den anpassade animeringen och bildrutelängden. Följande är stegen för att utföra denna operation.

Följande kodexempel visar hur man skapar en animerad PNG (APNG) från en PNG-bild med C#.

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();

        // lägg till första ramen
        apngImage.AddFrame(sourceImage, FrameDuration);

        // lägg till mellanramar
       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);
        }

        // lägg till sista bildrutan
        apngImage.AddFrame(sourceImage, FrameDuration);

        apngImage.Save();
    }
}

Skapa animerad PNG från Multi-Page Tiff med C#

Du kan också använda en flersidig Tiff-fil för att skapa den animerade PNG-filen genom att ställa in önskad bildtid. Följande är stegen för att skapa animerad PNG från en Tiff-fil.

Följande kodexempel visar hur man skapar animerad PNG från en Tiff-fil med C#.

// Exempel 4. Exportera till APNG-filformat från annat icke-animerat format
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;

using (Image image = Image.Load("img4.tif")) {
    // Ställa in standardbildlängden
    image.Save("img4.tif.500ms.png", new ApngOptions() { DefaultFrameTime = 500 }); // 500 ms
    image.Save("img4.tif.250ms.png", new ApngOptions() { DefaultFrameTime = 250 }); // 250 ms
}

Källa Tiff

Source Tiff

Animerad PNG

TIFF till animerad PNG

Exportera animerad PNG till animerad GIF med C#

Du kan också exportera en animerad PNG-bild till en motsvarande animerad GIF. Följande är stegen för att exportera APNG till GIF.

Följande kodexempel visar hur man exporterar animerad PNG till GIF med C#.

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

using (Image image = Image.Load("elephant.png")) {
    // Kontrollerar typen av laddad bild
    Debug.Assert(image is ApngImage);
    // Spara i samma format
    image.Save("elephant_same_format.png");
    // Exportera till det andra animerade formatet
    image.Save("elephant.png.gif", new GifOptions());
}

Källa Animerad PNG

Animerad PNG-bild

Animerad GIF

Animerad PNG till GIF C#

Slutsats

I den här artikeln har du lärt dig hur du skapar en animerad PNG från olika källor med C#. Steg-för-steg-guiden och kodexemplen visade hur man skapar animerad PNG från ensidig PNG och flersidig Tiff samt exporterar animerad PNG till en animerad GIF med C#. Du kan lära dig mer om att manipulera APNG-bilder med hjälp av dokumentationen för API:et.

Se även