Animated PNG (Portable Network Graphics) è un’estensione del formato PNG per incorporare le animazioni. Proprio come le GIF animate, il formato APNG viene utilizzato per presentare le animazioni. Un vantaggio di APNG su GIF è che supporta la trasparenza a 24 bit mentre GIF supporta solo 8 bit. Inoltre, APNG fornisce un’animazione più fluida rispetto a una GIF animata. In questo articolo, ti mostrerò come creare immagini PNG animate (APNG) da un’immagine o un Tiff multipagina ed esportare APNG in GIF animate a livello di codice usando C# (o VB.NET).
- API .NET per immagini PNG animate
- Crea PNG animato da un’immagine
- Crea PNG animati da file Tiff multipagina
- Esporta PNG animato in GIF animato
API .NET per immagini PNG animate
Aspose offre la sua .NET Imaging API per creare o manipolare i formati di immagine più diffusi, inclusi i PNG animati, utilizzando C# o VB.NET. Sfrutteremo le capacità di Aspose.Imaging per .NET per creare o esportare immagini PNG animate. Puoi scaricare la DLL dell’API o installarla all’interno della tua applicazione .NET usando NuGet.
PM> Install-Package Aspose.Imaging
Crea PNG animato da un’immagine usando C#
Aspose.Imaging per .NET ti consente di creare un PNG animato da un’immagine a pagina singola come PNG impostando l’animazione personalizzata e la durata del fotogramma. Di seguito sono riportati i passaggi per eseguire questa operazione.
- Carica l’immagine PNG in un oggetto RasterImage usando il metodo Image.Load(String).
- Imposta le proprietà ApngOptions secondo le tue esigenze.
- Usa la classe ApngImage per creare il PNG animato.
- Aggiorna la gamma di ogni fotogramma usando il metodo ApngFrame.AdjustGamma(Single).
- Crea PNG animati usando il metodo ApngImage.Save().
L’esempio di codice seguente mostra come creare un PNG animato (APNG) da un’immagine PNG usando 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();
// aggiungi il primo fotogramma
apngImage.AddFrame(sourceImage, FrameDuration);
// aggiungere cornici intermedie
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);
}
// aggiungi l'ultimo fotogramma
apngImage.AddFrame(sourceImage, FrameDuration);
apngImage.Save();
}
}
Crea PNG animato da Tiff multipagina usando C#
Puoi anche utilizzare un file Tiff multipagina per creare il PNG animato impostando il frame time desiderato. Di seguito sono riportati i passaggi per creare PNG animati da un file Tiff.
- Carica l’immagine Tiff all’interno di un oggetto della classe Image.
- Salva Tiff come APNG usando il metodo Image.Save(String, ImageOptionsBase).
L’esempio di codice seguente mostra come creare PNG animato da un file Tiff usando C#.
// Esempio 4. Esportazione in formato file APNG da un altro formato non animato
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using (Image image = Image.Load("img4.tif")) {
// Impostazione della durata del frame predefinita
image.Save("img4.tif.500ms.png", new ApngOptions() { DefaultFrameTime = 500 }); // 500 ms
image.Save("img4.tif.250ms.png", new ApngOptions() { DefaultFrameTime = 250 }); // 250 ms
}
Fonte Tiff
[Tiff sorgente](immagini/Tiff.tif multipagina)
PNG animato
Esporta PNG animato in GIF animato usando C#
Puoi anche esportare un’immagine PNG animata in una GIF animata equivalente. Di seguito sono riportati i passaggi per esportare APNG in GIF.
- Carica il PNG animato in un oggetto Image.
- Esporta APNG in GIF usando il metodo Image.Save(String, GifOptions()).
L’esempio di codice seguente mostra come esportare PNG animato in GIF usando C#.
using System.Diagnostics;
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using Aspose.Imaging.FileFormats.Apng;
using (Image image = Image.Load("elephant.png")) {
// Verifica del tipo di immagine caricata
Debug.Assert(image is ApngImage);
// Salva nello stesso formato
image.Save("elephant_same_format.png");
// Esporta nell'altro formato animato
image.Save("elephant.png.gif", new GifOptions());
}
Sorgente PNG animato
GIF animate
Conclusione
In questo articolo, hai imparato come creare un PNG animato da diverse fonti usando C#. La guida passo passo e gli esempi di codice hanno dimostrato come creare PNG animati da PNG a pagina singola e Tiff a più pagine, nonché come esportare PNG animati in una GIF animata usando C#. Puoi saperne di più sulla manipolazione delle immagini APNG utilizzando la documentazione dell’API.