PNG animado (Portable Network Graphics) es una extensión del formato PNG para incorporar las animaciones. Al igual que los GIF animados, se utiliza el formato APNG para presentar las animaciones. Una ventaja de APNG sobre GIF es que admite transparencia de 24 bits, mientras que GIF solo admite 8 bits. Además, APNG proporciona una animación más fluida en comparación con un GIF animado. En este artículo, le mostraré cómo crear imágenes animadas PNG (APNG) a partir de una imagen o Tiff de varias páginas y exportar APNG a GIF animado mediante programación usando C# (o VB.NET).
- .NET API para imágenes PNG animadas
- Crear PNG animado a partir de una imagen
- Crear PNG animado a partir de un archivo Tiff de varias páginas
- Exportar PNG animado a GIF animado
.NET API para imágenes PNG animadas
Aspose ofrece su API de imágenes .NET para crear o manipular formatos de imagen populares, incluido PNG animado, usando C# o VB.NET. Aprovecharemos las capacidades de Aspose.Imaging for .NET para crear o exportar imágenes PNG animadas. Puede descargar la DLL de la API o instalarla dentro de su aplicación .NET usando NuGet.
PM> Install-Package Aspose.Imaging
Crear PNG animado a partir de una imagen usando C#
Aspose.Imaging for .NET le permite crear un PNG animado a partir de una imagen de una sola página, como PNG, configurando la animación personalizada y la duración del cuadro. Los siguientes son los pasos para realizar esta operación.
- Cargue la imagen PNG en un objeto RasterImage usando el método Image.Load(String).
- Configure las propiedades de ApngOptions según sus requisitos.
- Usa la clase ApngImage para crear el PNG animado.
- Actualice la gamma de cada cuadro usando el método ApngFrame.AdjustGamma(Single).
- Cree PNG animados usando el método ApngImage.Save().
El siguiente ejemplo de código muestra cómo crear un PNG animado (APNG) a partir de una imagen PNG mediante 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();
// añadir primer cuadro
apngImage.AddFrame(sourceImage, FrameDuration);
// agregar marcos intermedios
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);
}
// agregar el último cuadro
apngImage.AddFrame(sourceImage, FrameDuration);
apngImage.Save();
}
}
Cree PNG animados a partir de Tiff de varias páginas usando C#
También puede usar un archivo Tiff de varias páginas para crear el PNG animado configurando el marco de tiempo deseado. Los siguientes son los pasos para crear PNG animados a partir de un archivo Tiff.
- Cargue la imagen Tiff dentro de un objeto de la clase Image.
- Guarde Tiff como APNG usando el método Image.Save(String, ImageOptionsBase).
El siguiente ejemplo de código muestra cómo crear PNG animado a partir de un archivo Tiff usando C#.
// Ejemplo 4. Exportación a formato de archivo APNG desde otro formato no animado
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using (Image image = Image.Load("img4.tif")) {
// Configuración de la duración del marco predeterminado
image.Save("img4.tif.500ms.png", new ApngOptions() { DefaultFrameTime = 500 }); // 500 ms
image.Save("img4.tif.250ms.png", new ApngOptions() { DefaultFrameTime = 250 }); // 250 ms
}
TIFF de origen
PNG animado
Exportar PNG animado a GIF animado usando C#
También puede exportar una imagen PNG animada a un GIF animado equivalente. Los siguientes son los pasos para exportar APNG a GIF.
- Cargue el PNG animado en un objeto Image.
- Exporte APNG a GIF utilizando el método Image.Save(String, GifOptions()).
El siguiente ejemplo de código muestra cómo exportar PNG animado a 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")) {
// Comprobación del tipo de imagen cargada
Debug.Assert(image is ApngImage);
// Guardar en el mismo formato
image.Save("elephant_same_format.png");
// Exportar al otro formato animado
image.Save("elephant.png.gif", new GifOptions());
}
PNG animado fuente
GIF animado
Conclusión
En este artículo, ha aprendido a crear un PNG animado a partir de diferentes fuentes usando C#. La guía paso a paso y los ejemplos de código demostraron cómo crear PNG animados a partir de PNG de una sola página y Tiff de varias páginas, así como exportar PNG animados a un GIF animado usando C#. Puede obtener más información sobre la manipulación de imágenes APNG utilizando la documentación de la API.