在本文中,我将向您展示如何从图像或多页Tiff 创建动画PNG(APNG)图像,以及如何使用C#(或VB.NET)以编程方式将APNG导出到动画GIF。
动画PNG(便携式网络图形)是对PNG格式的扩展,以合并动画。就像动画GIF一样,APNG格式用于呈现动画。APNG相对于GIF的优势在于,它支持24位透明性,而GIF仅支持8位。此外,与动画GIF相比,APNG提供了更流畅的动画。
Aspose提供其.NET Imaging API,以使用C#或VB.NET创建或处理流行的图像格式,包括动画PNG。接下来将利用Aspose.Imaging for .NET的功能来创建或导出动画PNG图像。
在本文中,我将向您展示如何从图像或多页Tiff 创建动画PNG(APNG)图像,以及如何使用C#(或VB.NET)以编程方式将APNG导出到动画GIF。
- .NET API用于动画PNG图像
- 从图像创建动画PNG
- 从多页Tiff文件创建动画PNG
- 将动画PNG导出为动画GIF
目前发布了Aspose.Imaging for .NET v20.6,支持APNG(动画PNG)文件格式,支持BMP的新压缩方法DXT1 ,支持批量导出到WebP以获得多页图像,还没使用过的朋友可以最新版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 sconst int FrameDuration = 70; // 70 msusing (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(); // add first frame apngImage.AddFrame(sourceImage, FrameDuration); // add intermediate frames 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); } // add last frame apngImage.AddFrame(sourceImage, FrameDuration); apngImage.Save(); }}
使用C#从多页Tiff创建动画PNG
使用多页的Tiff文件通过设置所需的帧时间来创建动画PNG。以下是从Tiff文件创建动画PNG的步骤。
- 将Tiff图片加载到Image类的对象中。
- 使用Image.Save(String,ImageOptionsBase)方法将Tiff另存为APNG 。
下面的代码示例演示如何使用C#从Tiff文件创建动画PNG。
using Aspose.Imaging;using Aspose.Imaging.ImageOptions;using (Image image = Image.Load("img4.tif")) { // Setting up the default frame duration image.Save("img4.tif.500ms.png", new ApngOptions() { DefaultFrameTime = 500 }); // 500 ms image.Save("img4.tif.250ms.png", new ApngOptions() { DefaultFrameTime = 250 }); // 250 ms}
使用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")) { // Checking the type of loaded image Debug.Assert(image is ApngImage); // Save to the same format image.Save("elephant_same_format.png"); // Export to the other animated format image.Save("elephant.png.gif", new GifOptions());}
输出结果
还想要更多吗可以点击阅读【2020 · Aspose最新资源整合】,查找需要的教程资源。如果您有任何疑问或需求,请随时加入Aspose技术交流群(),我们很高兴为您提供查询和咨询。
标签:
来源:慧都
声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!