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
- Skapa animerad PNG från en bild
- Skapa animerad PNG från flersidig Tiff-fil
- Exportera animerad PNG till animerad GIF
.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.
- Ladda PNG-bilden i ett RasterImage-objekt med metoden Image.Load(String).
- Ställ in ApngOptions egenskaper enligt dina krav.
- Använd klassen ApngImage för att skapa den animerade PNG.
- Uppdatera gamma för varje bildruta med metoden ApngFrame.AdjustGamma(Single).
- Skapa animerad PNG med metoden ApngImage.Save().
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.
- Ladda Tiff-bild i ett objekt av klassen Image.
- Spara Tiff som APNG med metoden Image.Save(String, ImageOptionsBase).
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
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.
- Ladda den animerade PNG-en i ett Image-objekt.
- Exportera APNG till GIF med metoden Image.Save(String, GifOptions()).
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 GIF
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.