Class ApngOptions

Class ApngOptions

Namespace: Aspose.Imaging.ImageOptions
Assembly: Aspose.Imaging.dll (25.2.0)

The API for Animated PNG (Animated Portable Network Graphics) image file format creation is a dynamic tool for developers seeking to generate captivating animated images. With customizable options such as frame duration and the number of times to loop, this API allows for fine-tuning animated content according to specific needs. Whether creating engaging web graphics or interactive visuals, you can leverage this API to seamlessly incorporate APNG images with precise control over animation parameters.

public class ApngOptions : PngOptions, IDisposable, IHasXmpData, IHasMetadata, ICloneable

Inheritance

objectDisposableObjectImageOptionsBasePngOptionsApngOptions

Implements

IDisposable, IHasXmpData, IHasMetadata, ICloneable

Inherited Members

PngOptions.DefaultCompressionLevel, PngOptions.ColorType, PngOptions.Progressive, PngOptions.FilterType, PngOptions.CompressionLevel, PngOptions.BitDepth, ImageOptionsBase.Clone(), ImageOptionsBase.ReleaseManagedResources(), ImageOptionsBase.KeepMetadata, ImageOptionsBase.XmpData, ImageOptionsBase.Source, ImageOptionsBase.Palette, ImageOptionsBase.ResolutionSettings, ImageOptionsBase.VectorRasterizationOptions, ImageOptionsBase.BufferSizeHint, ImageOptionsBase.MultiPageOptions, ImageOptionsBase.FullFrame, ImageOptionsBase.ProgressEventHandler, DisposableObject.Dispose(), DisposableObject.ReleaseManagedResources(), DisposableObject.ReleaseUnmanagedResources(), DisposableObject.VerifyNotDisposed(), DisposableObject.Disposed, object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

Examples

The following example shows how to export apng APNG file format from other non-animated multi-page format.```csharp [C#]

                                                                                                                 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
                                                                                                                 }

The following example shows how to export to APNG file format.```csharp
[C#]

                                                                         using Aspose.Imaging;
                                                                         using Aspose.Imaging.ImageOptions;

                                                                         using (Image image = Image.Load("Animation1.webp")) {
                                                                             // Export to APNG animation with unlimited animation cycles as default
                                                                             image.Save("Animation1.webp.png", new ApngOptions());
                                                                             // Setting up animation cycles
                                                                             image.Save("Animation2.webp.png", new ApngOptions() { NumPlays = 5 }); // 5 cycles
                                                                         }

The following example shows how to create APNG image from another raster single-page image.```csharp [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))
                                                                                                      {
                                                                                                          // It is possible to set image default frame time there: apngImage.DefaultFrameTime = (uint)FrameDuration;

                                                                                                          int numOfFrames = AnimationDuration / FrameDuration;
                                                                                                          int numOfFrames2 = numOfFrames / 2;

                                                                                                          // Cleaning because the image contains one frame by default
                                                                                                          apngImage.RemoveAllFrames();

                                                                                                          // add first frame
                                                                                                          apngImage.AddFrame(sourceImage);

                                                                                                          // add intermediate frames
                                                                                                          for (int frameIndex = 1; frameIndex < numOfFrames - 1; ++frameIndex)
                                                                                                          {
                                                                                                              apngImage.AddFrame(sourceImage);
                                                                                                              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);

                                                                                                          apngImage.Save();
                                                                                                      }
                                                                                                  }

## Constructors

### <a id="Aspose_Imaging_ImageOptions_ApngOptions__ctor"></a> ApngOptions\(\)

Initializes a new instance of the Aspose.Imaging.ImageOptions.ApngOptions class.

```csharp
public ApngOptions()

Properties

DefaultFrameTime

Gets or sets the default frame duration.

public uint DefaultFrameTime { get; set; }

Property Value

uint

Examples

The following example shows how to export apng APNG file format from other non-animated multi-page format.```csharp [C#]

                                                                                                                 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
                                                                                                                 }

The following example shows how to create APNG image from another raster single-page image.```csharp
[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))
                                                                                                          {
                                                                                                              // It is possible to set image default frame time there: apngImage.DefaultFrameTime = (uint)FrameDuration;

                                                                                                              int numOfFrames = AnimationDuration / FrameDuration;
                                                                                                              int numOfFrames2 = numOfFrames / 2;

                                                                                                              // Cleaning because the image contains one frame by default
                                                                                                              apngImage.RemoveAllFrames();

                                                                                                              // add first frame
                                                                                                              apngImage.AddFrame(sourceImage);

                                                                                                              // add intermediate frames
                                                                                                              for (int frameIndex = 1; frameIndex &lt; numOfFrames - 1; ++frameIndex)
                                                                                                              {
                                                                                                                  apngImage.AddFrame(sourceImage);
                                                                                                                  ApngFrame lastFrame = (ApngFrame)apngImage.Pages[apngImage.PageCount - 1];
                                                                                                                  float gamma = frameIndex &gt;= numOfFrames2 ? numOfFrames - frameIndex - 1 : frameIndex;
                                                                                                                  lastFrame.AdjustGamma(gamma);
                                                                                                              }

                                                                                                              // add last frame
                                                                                                              apngImage.AddFrame(sourceImage);

                                                                                                              apngImage.Save();
                                                                                                          }
                                                                                                      }

NumPlays

Gets or sets the number of times to loop animation. 0 indicates infinite looping.

public int NumPlays { get; set; }

Property Value

int

Examples

The following example shows how to export to APNG file format.```csharp [C#]

                                                                     using Aspose.Imaging;
                                                                     using Aspose.Imaging.ImageOptions;

                                                                     using (Image image = Image.Load("Animation1.webp")) {
                                                                         // Export to APNG animation with unlimited animation cycles as default
                                                                         image.Save("Animation1.webp.png", new ApngOptions());
                                                                         // Setting up animation cycles
                                                                         image.Save("Animation2.webp.png", new ApngOptions() { NumPlays = 5 }); // 5 cycles
                                                                     }