Animated PNG (Portable Network Graphics) to rozszerzenie formatu PNG w celu uwzględnienia animacji. Podobnie jak animowane pliki GIF, do prezentacji animacji używany jest format APNG. Przewagą APNG nad GIF jest to, że obsługuje 24-bitową przezroczystość, podczas gdy GIF obsługuje tylko 8-bitową. Ponadto APNG zapewnia płynniejszą animację w porównaniu z animowanym GIF-em. W tym artykule pokażę, jak utworzyć animowane obrazy PNG (APNG) z obrazu lub wielostronicowego Tiffa i programowo wyeksportować APNG do animowanego GIF-a za pomocą C# (lub VB.NET).
- Interfejs API .NET dla animowanych obrazów PNG
- Utwórz animowany plik PNG z obrazu
- Utwórz animowany plik PNG z wielostronicowego pliku Tiff
- Eksportuj animowany plik PNG do animowanego pliku GIF
Interfejs API .NET dla animowanych obrazów PNG
Aspose oferuje swój .NET Imaging API do tworzenia lub manipulowania popularnymi formatami obrazów, w tym animowanym PNG, przy użyciu C# lub VB.NET. Wykorzystamy możliwości Aspose.Imaging for .NET do tworzenia lub eksportowania animowanych obrazów PNG. Możesz pobrać bibliotekę DLL interfejsu API lub zainstalować ją w swojej aplikacji .NET przy użyciu NuGet.
PM> Install-Package Aspose.Imaging
Utwórz animowany plik PNG z obrazu za pomocą C#
Aspose.Imaging dla platformy .NET umożliwia tworzenie animowanych obrazów PNG z obrazu jednostronicowego, takiego jak PNG, poprzez ustawienie niestandardowej animacji i czasu trwania klatki. Poniżej przedstawiono kroki, aby wykonać tę operację.
- Załaduj obraz PNG do obiektu RasterImage za pomocą metody Image.Load(String).
- Ustaw właściwości ApngOptions zgodnie ze swoimi wymaganiami.
- Użyj klasy ApngImage, aby utworzyć animowany plik PNG.
- Zaktualizuj gamma każdej klatki za pomocą metody ApngFrame.AdjustGamma(Single).
- Utwórz animowany plik PNG za pomocą metody ApngImage.Save().
Poniższy przykładowy kod pokazuje, jak utworzyć animowany plik PNG (APNG) z obrazu PNG przy użyciu języka 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();
// dodaj pierwszą klatkę
apngImage.AddFrame(sourceImage, FrameDuration);
// dodaj ramki pośrednie
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);
}
// dodaj ostatnią klatkę
apngImage.AddFrame(sourceImage, FrameDuration);
apngImage.Save();
}
}
Utwórz animowany PNG z wielostronicowego Tiffa za pomocą C#
Możesz także użyć wielostronicowego pliku Tiff, aby utworzyć animowany plik PNG, ustawiając żądany czas klatki. Poniżej przedstawiono kroki tworzenia animowanego PNG z pliku Tiff.
- Załaduj obraz Tiff w obiekcie klasy Image.
- Zapisz Tiff jako APNG przy użyciu metody Image.Save(String, ImageOptionsBase).
Poniższy przykładowy kod pokazuje, jak utworzyć animowany plik PNG z pliku Tiff przy użyciu języka C#.
// Przykład 4. Eksport do formatu pliku APNG z innego formatu nieanimowanego
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using (Image image = Image.Load("img4.tif")) {
// Ustawianie domyślnego czasu trwania klatki
image.Save("img4.tif.500ms.png", new ApngOptions() { DefaultFrameTime = 500 }); // 500 ms
image.Save("img4.tif.250ms.png", new ApngOptions() { DefaultFrameTime = 250 }); // 250 ms
}
Źródło Tiff
Animowane PNG
Eksportuj animowany PNG do animowanego GIF-a za pomocą C#
Możesz także wyeksportować animowany obraz PNG do równoważnego animowanego pliku GIF. Poniżej przedstawiono kroki, aby wyeksportować plik APNG do formatu GIF.
- Załaduj animowany plik PNG do obiektu Image.
- Eksportuj APNG do formatu GIF przy użyciu metody Image.Save(String, GifOptions()).
Poniższy przykładowy kod pokazuje, jak wyeksportować animowany plik PNG do formatu GIF przy użyciu języka C#.
using System.Diagnostics;
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using Aspose.Imaging.FileFormats.Apng;
using (Image image = Image.Load("elephant.png")) {
// Sprawdzanie typu załadowanego obrazu
Debug.Assert(image is ApngImage);
// Zapisz w tym samym formacie
image.Save("elephant_same_format.png");
// Eksportuj do innego animowanego formatu
image.Save("elephant.png.gif", new GifOptions());
}
Źródło animowanego PNG
Animowany gif
Wniosek
W tym artykule nauczyłeś się, jak tworzyć animowane pliki PNG z różnych źródeł przy użyciu języka C#. Przewodnik krok po kroku i przykłady kodu pokazały, jak utworzyć animowany plik PNG z jednostronicowego pliku PNG i wielostronicowego pliku Tiff, a także wyeksportować animowany plik PNG do animowanego pliku GIF za pomocą języka C#. Więcej informacji na temat manipulowania obrazami APNG można znaleźć w dokumentacji interfejsu API.