彩票走势图

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

翻译|使用教程|编辑:李显亮|2020-07-06 13:51:19.963|阅读 824 次

概述:在本文中,我将向您展示如何从图像或多页Tiff 创建动画PNG(APNG)图像,以及如何使用C#(或VB.NET)以编程方式将APNG导出到动画GIF。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

动画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 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();

        // 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技术交流群(642018183),我们很高兴为您提供查询和咨询
标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP