PNG Animado (Portable Network Graphics) é uma extensão do formato PNG para incorporar as animações. Assim como os GIFs animados, o formato APNG é usado para apresentar as animações. Uma vantagem do APNG sobre o GIF é que ele suporta transparência de 24 bits, enquanto o GIF suporta apenas 8 bits. Além disso, o APNG fornece uma animação mais suave em comparação com um GIF animado. Neste artigo, mostrarei como criar imagens animadas PNG (APNG) a partir de uma imagem ou Tiff de várias páginas e exportar APNG para GIF animado programaticamente usando C# (ou VB.NET).
- API .NET para imagens PNG animadas
- Criar PNG animado a partir de uma imagem
- Crie um PNG animado a partir de um arquivo Tiff de várias páginas
- Exportar PNG animado para GIF animado
API .NET para imagens PNG animadas
A Aspose oferece sua .NET Imaging API para criar ou manipular formatos de imagem populares, incluindo PNG animado usando C# ou VB.NET. Aproveitaremos os recursos do Aspose.Imaging for .NET para criar ou exportar imagens PNG animadas. Você pode baixar a DLL da API ou instalá-la em seu aplicativo .NET usando NuGet.
PM> Install-Package Aspose.Imaging
Criar PNG animado de uma imagem usando C#
O Aspose.Imaging para .NET permite que você crie um PNG animado a partir de uma imagem de página única, como PNG, definindo a animação personalizada e a duração do quadro. A seguir estão as etapas para realizar esta operação.
- Carregue a imagem PNG em um objeto RasterImage usando o método Image.Load(String).
- Defina as propriedades ApngOptions de acordo com seus requisitos.
- Use a classe ApngImage para criar o PNG animado.
- Atualize a gama de cada quadro usando o método ApngFrame.AdjustGamma(Single).
- Crie um PNG animado usando o método ApngImage.Save().
O exemplo de código a seguir mostra como criar um PNG animado (APNG) de uma imagem 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();
// adicionar primeiro quadro
apngImage.AddFrame(sourceImage, FrameDuration);
// adicionar quadros intermediários
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);
}
// adicionar último quadro
apngImage.AddFrame(sourceImage, FrameDuration);
apngImage.Save();
}
}
Criar PNG animado de Tiff de várias páginas usando C#
Você também pode usar um arquivo Tiff de várias páginas para criar o PNG animado definindo o tempo de quadro desejado. A seguir estão as etapas para criar PNG animado a partir de um arquivo Tiff.
- Carregue a imagem Tiff dentro de um objeto da classe Image.
- Salve Tiff como APNG usando o método Image.Save(String, ImageOptionsBase).
O exemplo de código a seguir mostra como criar PNG animado de um arquivo Tiff usando C#.
// Exemplo 4. Exportando para o formato de arquivo APNG de outro formato não animado
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using (Image image = Image.Load("img4.tif")) {
// Configurando a duração padrão do quadro
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
PNG Animado
Exportar PNG animado para GIF animado usando C#
Você também pode exportar uma imagem PNG animada para um GIF animado equivalente. A seguir estão as etapas para exportar APNG para GIF.
- Carregue o PNG animado em um objeto Image.
- Exporte APNG para GIF usando o método Image.Save(String, GifOptions()).
O exemplo de código a seguir mostra como exportar PNG animado para 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")) {
// Verificando o tipo de imagem carregada
Debug.Assert(image is ApngImage);
// Salvar no mesmo formato
image.Save("elephant_same_format.png");
// Exportar para outro formato animado
image.Save("elephant.png.gif", new GifOptions());
}
Fonte Animada PNG
Gif Animado
Conclusão
Neste artigo, você aprendeu como criar um PNG animado de diferentes fontes usando C#. O guia passo a passo e os exemplos de código demonstraram como criar PNG animado de PNG de página única e Tiff de várias páginas, bem como exportar PNG animado para um GIF animado usando C#. Você pode aprender mais sobre como manipular imagens APNG usando a documentação da API.