Animated PNG (Portable Network Graphics) est une extension du format PNG pour incorporer les animations. Tout comme les GIF animés, le format APNG est utilisé pour présenter les animations. Un avantage d’APNG sur GIF est qu’il prend en charge la transparence 24 bits alors que GIF ne prend en charge que 8 bits. De plus, APNG fournit une animation plus fluide par rapport à un GIF animé. Dans cet article, je vais vous montrer comment créer des images PNG animées (APNG) à partir d’une image ou d’un Tiff multipage et exporter APNG vers un GIF animé par programme à l’aide de C# (ou VB.NET).
- API .NET pour les images PNG animées
- Créer un PNG animé à partir d’une image
- Créer un PNG animé à partir d’un fichier Tiff de plusieurs pages
- Exporter un PNG animé vers un GIF animé
API .NET pour les images PNG animées
Aspose propose son .NET Imaging API pour créer ou manipuler des formats d’image populaires, y compris le PNG animé à l’aide de C# ou VB.NET. Nous tirerons parti des capacités d’Aspose.Imaging for .NET pour créer ou exporter des images PNG animées. Vous pouvez soit télécharger la DLL de l’API, soit l’installer dans votre application .NET à l’aide de NuGet.
PM> Install-Package Aspose.Imaging
Créer un PNG animé à partir d’une image à l’aide de C#
Aspose.Imaging for .NET vous permet de créer un PNG animé à partir d’une image d’une seule page telle que PNG en définissant l’animation personnalisée et la durée de l’image. Voici les étapes pour effectuer cette opération.
- Chargez l’image PNG dans un objet RasterImage à l’aide de la méthode Image.Load(String).
- Définissez les propriétés ApngOptions selon vos besoins.
- Utilisez la classe ApngImage pour créer le PNG animé.
- Mettez à jour le gamma de chaque image à l’aide de la méthode ApngFrame.AdjustGamma(Single).
- Créez un PNG animé à l’aide de la méthode ApngImage.Save().
L’exemple de code suivant montre comment créer un PNG animé (APNG) à partir d’une image PNG à l’aide de 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();
// ajouter la première image
apngImage.AddFrame(sourceImage, FrameDuration);
// ajouter des cadres intermédiaires
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);
}
// ajouter la dernière image
apngImage.AddFrame(sourceImage, FrameDuration);
apngImage.Save();
}
}
Créer un PNG animé à partir de plusieurs pages Tiff à l’aide de C#
Vous pouvez également utiliser un fichier Tiff de plusieurs pages pour créer le PNG animé en définissant la durée de trame souhaitée. Voici les étapes pour créer un PNG animé à partir d’un fichier Tiff.
- Charger une image Tiff dans un objet de la classe Image.
- Enregistrez Tiff au format APNG à l’aide de la méthode Image.Save(String, ImageOptionsBase).
L’exemple de code suivant montre comment créer un PNG animé à partir d’un fichier Tiff à l’aide de C#.
// Exemple 4. Exportation au format de fichier APNG à partir d'un autre format non animé
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using (Image image = Image.Load("img4.tif")) {
// Configuration de la durée d'image par défaut
image.Save("img4.tif.500ms.png", new ApngOptions() { DefaultFrameTime = 500 }); // 500 ms
image.Save("img4.tif.250ms.png", new ApngOptions() { DefaultFrameTime = 250 }); // 250 ms
}
Format source
PNG animé
Exporter un PNG animé vers un GIF animé à l’aide de C#
Vous pouvez également exporter une image PNG animée vers un GIF animé équivalent. Voici les étapes pour exporter APNG vers GIF.
- Chargez le PNG animé dans un objet Image.
- Exportez APNG vers GIF en utilisant la méthode Image.Save(String, GifOptions()).
L’exemple de code suivant montre comment exporter un PNG animé vers un GIF à l’aide de C#.
using System.Diagnostics;
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using Aspose.Imaging.FileFormats.Apng;
using (Image image = Image.Load("elephant.png")) {
// Vérification du type d'image chargée
Debug.Assert(image is ApngImage);
// Enregistrer au même format
image.Save("elephant_same_format.png");
// Exporter vers l'autre format d'animation
image.Save("elephant.png.gif", new GifOptions());
}
Source PNG animé
GIF animé
Conclusion
Dans cet article, vous avez appris à créer un PNG animé à partir de différentes sources à l’aide de C#. Le guide étape par étape et les exemples de code ont montré comment créer un PNG animé à partir d’un PNG monopage et d’un Tiff multipage, ainsi qu’exporter un PNG animé vers un GIF animé à l’aide de C#. Vous pouvez en savoir plus sur la manipulation des images APNG en utilisant la documentation de l’API.