動畫 PNG(便攜式網絡圖形)是 PNG 格式的擴展,用於合併動畫。就像動畫 GIF 一樣,APNG 格式用於呈現動畫。 APNG 優於 GIF 的一個優勢是,它支持 24 位透明度,而 GIF 僅支持 8 位。此外,與動畫 GIF 相比,APNG 提供更流暢的動畫。在本文中,我將向您展示如何使用 C#(或 VB.NET)以編程方式從圖像或多頁 Tiff 創建動畫 PNG (APNG) 圖像並將 APNG 導出為動畫 GIF。
用於動畫 PNG 圖像的 .NET API
Aspose 提供其 .NET Imaging API 來創建或操作流行的圖像格式,包括使用 C# 或 VB.NET 的動畫 PNG。我們將利用 Aspose.Imaging for .NET 的功能來創建或導出動畫 PNG 圖像。您可以 下載 API 的 DLL 或使用 NuGet 在您的 .NET 應用程序中安裝它。
PM> Install-Package Aspose.Imaging
使用 C# 從圖像創建動畫 PNG
Aspose.Imaging for .NET 允許您通過設置自定義動畫和幀持續時間從單頁圖像(例如 PNG)創建動畫 PNG。以下是執行此操作的步驟。
- 使用 Image.Load(String) 方法將 PNG 圖像加載到 RasterImage 對像中。
- 根據您的要求設置 ApngOptions 屬性。
- 使用 ApngImage 類創建動畫 PNG。
- 使用 ApngFrame.AdjustGamma(Single) 方法更新每一幀的伽瑪值。
- 使用 ApngImage.Save() 方法創建動畫 PNG。
以下代碼示例演示如何使用 C# 從 PNG 圖像創建動畫 PNG (APNG)。
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();
// 添加第一幀
apngImage.AddFrame(sourceImage, FrameDuration);
// 添加中間幀
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);
}
// 添加最後一幀
apngImage.AddFrame(sourceImage, FrameDuration);
apngImage.Save();
}
}
使用 C# 從多頁 Tiff 創建動畫 PNG
您還可以使用多頁 Tiff 文件通過設置所需的幀時間來創建動畫 PNG。以下是從 Tiff 文件創建動畫 PNG 的步驟。
- 在 Image 類的對像中加載 Tiff 圖像。
- 使用 Image.Save(String, ImageOptionsBase) 方法將 Tiff 保存為 APNG。
以下代碼示例展示瞭如何使用 C# 從 Tiff 文件創建動畫 PNG。
// 示例 4. 從其他非動畫格式導出為 APNG 文件格式
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using (Image image = Image.Load("img4.tif")) {
// 設置默認幀持續時間
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
動畫PNG
使用 C# 將動畫 PNG 導出為動畫 GIF
您還可以將動畫 PNG 圖像導出為等效的動畫 GIF。以下是將 APNG 導出為 GIF 的步驟。
- 將動畫 PNG 加載到 Image 對像中。
- 使用 Image.Save(String, GifOptions()) 方法將 APNG 導出為 GIF。
以下代碼示例展示瞭如何使用 C# 將動畫 PNG 導出為 GIF。
using System.Diagnostics;
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using Aspose.Imaging.FileFormats.Apng;
using (Image image = Image.Load("elephant.png")) {
// 檢查加載圖像的類型
Debug.Assert(image is ApngImage);
// 保存為相同格式
image.Save("elephant_same_format.png");
// 導出為其他動畫格式
image.Save("elephant.png.gif", new GifOptions());
}
源動畫 PNG
動畫 GIF
結論
在本文中,您學習瞭如何使用 C# 從不同來源創建動畫 PNG。分步指南和代碼示例演示瞭如何使用 C# 從單頁 PNG 和多頁 Tiff 創建動畫 PNG 以及將動畫 PNG 導出為動畫 GIF。您可以使用 API 文檔了解更多關於操作 APNG 圖像的信息。