图像处理控件Aspose.Imaging亮点功能推荐:创建动画PNG图像

在本文中,我将向您展示如何从图像或多页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());}

输出结果

图像处理控件Aspose.Imaging亮点功能推荐:创建动画PNG图像

还想要更多吗可以点击阅读【2020 · Aspose最新资源整合】查找需要的教程资源。如果您有任何疑问或需求,请随时加入Aspose技术交流群(),我们很高兴为您提供查询和咨询
标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年6月3日
下一篇 2020年6月3日

相关推荐

发表回复

登录后才能评论