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
- Vytvořte animovaný PNG z obrázku
- Vytvořte animovaný PNG z vícestránkového souboru Tiff
- Exportujte animovaný PNG do animovaného GIFu
.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.
- Načtěte obrázek PNG do objektu RasterImage pomocí metody Image.Load(String).
- Nastavte vlastnosti ApngOptions podle svých požadavků.
- K vytvoření animovaného PNG použijte třídu ApngImage.
- Aktualizujte gamu každého snímku pomocí metody ApngFrame.AdjustGamma(Single).
- Vytvořte animovaný PNG pomocí metody ApngImage.Save().
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.
- Načtěte obrázek Tiff do objektu třídy Image.
- Uložte Tiff jako APNG pomocí metody Image.Save(String, ImageOptionsBase).
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
Animovaný 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.
- Načtěte animovaný PNG do objektu Image.
- Exportujte APNG do GIF pomocí metody Image.Save(String, GifOptions()).
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ý GIF
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.