Animated PNG(Portable Network Graphics) je rozšířením formátu PNG pro začlenění animací. Stejně jako u animovaných GIFů se k prezentaci animací používá formát APNG. Hranou APNG oproti GIF je podpora 24bitové průhlednosti, zatímco GIF podporuje pouze 8bitovou. Navíc APNG poskytuje plynulejší animaci ve srovnání s animovaným GIFem. V tomto článku vám ukážu, jak vytvořit animované obrázky PNG (APNG) z obrázku nebo vícestránkového Tiffu a exportovat APNG do animovaného GIF programově pomocí C# (nebo VB.NET).

.NET API pro animované obrázky PNG

Aspose nabízí své .NET Imaging API k vytváření nebo manipulaci s oblíbenými formáty obrázků včetně animovaného PNG pomocí C# nebo VB.NET. Využijeme možnosti Aspose.Imaging for .NET k vytváření nebo exportu animovaných obrázků PNG. Můžete si buď stáhnout DLL API, nebo ji nainstalovat do své aplikace .NET pomocí NuGet.

PM> Install-Package Aspose.Imaging

Vytvořte animovaný PNG z obrázku pomocí C#

Aspose.Imaging for .NET vám umožňuje vytvořit animovaný PNG z jednostránkového obrázku, jako je PNG, nastavením vlastní animace a trvání snímku. Následují kroky k provedení této operace.

Následující ukázka kódu ukazuje, jak vytvořit animovaný PNG (APNG) z obrázku PNG pomocí 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();

        // přidat první snímek
        apngImage.AddFrame(sourceImage, FrameDuration);

        // přidat mezirámy
       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);
        }

        // přidat poslední snímek
        apngImage.AddFrame(sourceImage, FrameDuration);

        apngImage.Save();
    }
}

Vytvořte animovaný PNG z vícestránkového Tiffu pomocí C#

Můžete také použít vícestránkový soubor Tiff k vytvoření animovaného PNG nastavením požadované doby snímku. Následují kroky k vytvoření animovaného PNG ze souboru Tiff.

Následující ukázka kódu ukazuje, jak vytvořit animovaný PNG ze souboru Tiff pomocí C#.

// Příklad 4. Export do formátu souboru APNG z jiného neanimovaného formátu
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;

using (Image image = Image.Load("img4.tif")) {
    // Nastavení výchozí doby trvání snímku
    image.Save("img4.tif.500ms.png", new ApngOptions() { DefaultFrameTime = 500 }); // 500 ms
    image.Save("img4.tif.250ms.png", new ApngOptions() { DefaultFrameTime = 250 }); // 250 ms
}

Zdroj Tiff

Zdroj Tiff

Animovaný PNG

TIFF do animovaného PNG

Exportujte animovaný PNG do animovaného GIF pomocí C#

Můžete také exportovat animovaný obrázek PNG do ekvivalentního animovaného GIF. Níže jsou uvedeny kroky k exportu APNG do GIF.

Následující ukázka kódu ukazuje, jak exportovat animovaný PNG do GIF pomocí C#.

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

using (Image image = Image.Load("elephant.png")) {
    // Kontrola typu načteného obrázku
    Debug.Assert(image is ApngImage);
    // Uložit do stejného formátu
    image.Save("elephant_same_format.png");
    // Export do jiného animovaného formátu
    image.Save("elephant.png.gif", new GifOptions());
}

Zdroj Animovaný PNG

Animovaný obrázek PNG

Animovaný GIF

Animovaný PNG do GIF C#

Závěr

V tomto článku jste se naučili, jak vytvořit animovaný PNG z různých zdrojů pomocí C#. Průvodce krok za krokem a ukázky kódu demonstrovaly, jak vytvořit animovaný PNG z jednostránkového PNG a vícestránkového Tiffu a jak exportovat animovaný PNG do animovaného GIF pomocí C#. Můžete se dozvědět více o manipulaci s obrázky APNG pomocí dokumentace rozhraní API.

Viz také