Class PngImage

Class PngImage

Namespace: Aspose.Imaging.FileFormats.Png
Assembly: Aspose.Imaging.dll (25.2.0)

Manipulate Portable Network Graphics (PNG) raster images with our versatile API, featuring support for compression levels and various color depths including Grayscale, Indexed Color, TrueColor, and alpha channels. Seamlessly process XMP metadata, enabling comprehensive image metadata management, while easily loading PNG images, performing diverse manipulations, applying filters, and converting images to other file formats for optimal versatility and customization.

[JsonObject(MemberSerialization.OptIn)]
public class PngImage : RasterCachedImage, IDisposable, IObjectWithBounds, IRasterImageArgb32PixelLoader, IRasterImageRawDataLoader, IHasXmpData, IHasMetadata

Inheritance

objectDisposableObjectDataStreamSupporterImageRasterImageRasterCachedImagePngImage

Implements

IDisposable, IObjectWithBounds, IRasterImageArgb32PixelLoader, IRasterImageRawDataLoader, IHasXmpData, IHasMetadata

Inherited Members

RasterCachedImage.CacheData(), RasterCachedImage.Blend(Point, RasterImage, Rectangle, byte), RasterCachedImage.Resize(int, int, ResizeType), RasterCachedImage.Resize(int, int, ImageResizeSettings), RasterCachedImage.RotateFlip(RotateFlipType), RasterCachedImage.Rotate(float, bool, Color), RasterCachedImage.Crop(Rectangle), RasterCachedImage.Dither(DitheringMethod, int, IColorPalette), RasterCachedImage.Grayscale(), RasterCachedImage.BinarizeFixed(byte), RasterCachedImage.BinarizeOtsu(), RasterCachedImage.BinarizeBradley(double, int), RasterCachedImage.BinarizeBradley(double), RasterCachedImage.AdjustBrightness(int), RasterCachedImage.AdjustContrast(float), RasterCachedImage.AdjustGamma(float, float, float), RasterCachedImage.AdjustGamma(float), RasterCachedImage.OnCached(), RasterCachedImage.OnPaletteChanged(IColorPalette, IColorPalette), RasterCachedImage.IsCached, RasterImage.xmpData, RasterImage.RemoveMetadata(), RasterImage.Save(Stream, ImageOptionsBase, Rectangle), RasterImage.GetModifyDate(bool), RasterImage.Dither(DitheringMethod, int), RasterImage.Dither(DitheringMethod, int, IColorPalette), RasterImage.GetDefaultPixels(Rectangle, IPartialArgb32PixelLoader), RasterImage.GetDefaultRawData(Rectangle, IPartialRawDataLoader, RawDataSettings), RasterImage.GetDefaultArgb32Pixels(Rectangle), RasterImage.GetDefaultRawData(Rectangle, RawDataSettings), RasterImage.GetArgb32Pixel(int, int), RasterImage.GetPixel(int, int), RasterImage.SetArgb32Pixel(int, int, int), RasterImage.SetPixel(int, int, Color), RasterImage.ReadScanLine(int), RasterImage.ReadArgb32ScanLine(int), RasterImage.WriteScanLine(int, Color[]), RasterImage.WriteArgb32ScanLine(int, int[]), RasterImage.LoadPartialArgb32Pixels(Rectangle, IPartialArgb32PixelLoader), RasterImage.LoadPartialPixels(Rectangle, IPartialPixelLoader), RasterImage.LoadArgb32Pixels(Rectangle), RasterImage.LoadArgb64Pixels(Rectangle), RasterImage.LoadPartialArgb64Pixels(Rectangle, IPartialArgb64PixelLoader), RasterImage.LoadPixels(Rectangle), RasterImage.LoadCmykPixels(Rectangle), RasterImage.LoadCmyk32Pixels(Rectangle), RasterImage.LoadRawData(Rectangle, RawDataSettings, IPartialRawDataLoader), RasterImage.LoadRawData(Rectangle, Rectangle, RawDataSettings, IPartialRawDataLoader), RasterImage.SaveRawData(byte[], int, Rectangle, RawDataSettings), RasterImage.SaveArgb32Pixels(Rectangle, int[]), RasterImage.SavePixels(Rectangle, Color[]), RasterImage.SaveCmykPixels(Rectangle, CmykColor[]), RasterImage.SaveCmyk32Pixels(Rectangle, int[]), RasterImage.SetResolution(double, double), RasterImage.SetPalette(IColorPalette, bool), RasterImage.Resize(int, int, ImageResizeSettings), RasterImage.Rotate(float, bool, Color), RasterImage.Rotate(float), RasterImage.BinarizeFixed(byte), RasterImage.BinarizeOtsu(), RasterImage.BinarizeBradley(double), RasterImage.BinarizeBradley(double, int), RasterImage.Blend(Point, RasterImage, Rectangle, byte), RasterImage.Blend(Point, RasterImage, byte), RasterImage.Grayscale(), RasterImage.AdjustBrightness(int), RasterImage.AdjustContrast(float), RasterImage.AdjustGamma(float, float, float), RasterImage.AdjustGamma(float), RasterImage.GetSkewAngle(), RasterImage.NormalizeAngle(), RasterImage.NormalizeAngle(bool, Color), RasterImage.Filter(Rectangle, FilterOptionsBase), RasterImage.ReplaceColor(Color, byte, Color), RasterImage.ReplaceColor(int, byte, int), RasterImage.ReplaceNonTransparentColors(Color), RasterImage.ReplaceNonTransparentColors(int), RasterImage.ToBitmap(), RasterImage.ReleaseManagedResources(), RasterImage.UpdateMetadata(), RasterImage.UpdateDimensions(int, int), RasterImage.PremultiplyComponents, RasterImage.UseRawData, RasterImage.UpdateXmpData, RasterImage.XmpData, RasterImage.RawIndexedColorConverter, RasterImage.RawCustomColorConverter, RasterImage.RawFallbackIndex, RasterImage.RawDataSettings, RasterImage.UsePalette, RasterImage.RawDataFormat, RasterImage.RawLineSize, RasterImage.IsRawDataAvailable, RasterImage.HorizontalResolution, RasterImage.VerticalResolution, RasterImage.HasTransparentColor, RasterImage.HasAlpha, RasterImage.TransparentColor, RasterImage.ImageOpacity, RasterImage.DataLoader, Image.CanLoad(string), Image.CanLoad(string, LoadOptions), Image.CanLoad(Stream), Image.CanLoad(Stream, LoadOptions), Image.Create(ImageOptionsBase, int, int), Image.Create(Image[]), Image.Create(MultipageCreateOptions), Image.Create(string[], bool), Image.Create(string[]), Image.Create(Image[], bool), Image.GetFileFormat(string), Image.GetFileFormat(Stream), Image.GetFittingRectangle(Rectangle, int, int), Image.GetFittingRectangle(Rectangle, int[], int, int), Image.Load(string, LoadOptions), Image.Load(string), Image.Load(Stream, LoadOptions), Image.Load(Stream), Image.GetProportionalWidth(int, int, int), Image.GetProportionalHeight(int, int, int), Image.RemoveMetadata(), Image.CanSave(ImageOptionsBase), Image.Resize(int, int), Image.Resize(int, int, ResizeType), Image.Resize(int, int, ImageResizeSettings), Image.GetDefaultOptions(object[]), Image.GetOriginalOptions(), Image.ResizeWidthProportionally(int), Image.ResizeHeightProportionally(int), Image.ResizeWidthProportionally(int, ResizeType), Image.ResizeHeightProportionally(int, ResizeType), Image.ResizeWidthProportionally(int, ImageResizeSettings), Image.ResizeHeightProportionally(int, ImageResizeSettings), Image.RotateFlip(RotateFlipType), Image.Rotate(float), Image.Crop(Rectangle), Image.Crop(int, int, int, int), Image.Save(), Image.Save(string), Image.Save(string, ImageOptionsBase), Image.Save(string, ImageOptionsBase, Rectangle), Image.Save(Stream, ImageOptionsBase), Image.Save(Stream, ImageOptionsBase, Rectangle), Image.GetSerializedStream(ImageOptionsBase, Rectangle, out int), Image.SetPalette(IColorPalette, bool), Image.UpdateContainer(Image), Image.GetCanNotSaveMessage(ImageOptionsBase), Image.GetFitRectangle(Rectangle), Image.GetImage2Export(ImageOptionsBase, Rectangle, IImageExporter), Image.GetFitRectangle(Rectangle, int[]), Image.OnPaletteChanged(IColorPalette, IColorPalette), Image.OnPaletteChanging(IColorPalette, IColorPalette), Image.ReleaseManagedResources(), Image.BitsPerPixel, Image.Bounds, Image.Container, Image.Height, Image.Palette, Image.UsePalette, Image.Size, Image.Width, Image.InterruptMonitor, Image.BufferSizeHint, Image.AutoAdjustPalette, Image.HasBackgroundColor, Image.FileFormat, Image.BackgroundColor, DataStreamSupporter.timeout, DataStreamSupporter.CacheData(), DataStreamSupporter.Save(), DataStreamSupporter.Save(Stream), DataStreamSupporter.Save(string), DataStreamSupporter.Save(string, bool), DataStreamSupporter.SaveData(Stream), DataStreamSupporter.ReleaseManagedResources(), DataStreamSupporter.OnDataStreamContainerChanging(StreamContainer), DataStreamSupporter.DataStreamContainer, DataStreamSupporter.IsCached, 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

This example shows how to load a PNG image from a file.```csharp [C#]

                                                              string dir = "c:\\temp\\";

                                                              // Load a PNG image from a file.
                                                              using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(dir + "sample.png"))
                                                              {
                                                                  // Transform the image to grayscale representation
                                                                  pngImage.Grayscale();

                                                                  // Save to a file.
                                                                  pngImage.Save(dir + "sample.grayscale.png");
                                                              }

## Constructors

### <a id="Aspose_Imaging_FileFormats_Png_PngImage__ctor_System_Int32_System_Int32_"></a> PngImage\(int, int\)

Initialize a new object of the Aspose.Imaging.FileFormats.Png.PngImage class by providing the 
width and height parameters. This constructor simplifies the creation of PNG 
images by allowing developers to specify the dimensions directly, facilitating 
efficient management of PNG image data within their applications.

```csharp
public PngImage(int width, int height)

Parameters

width int

The width.

height int

The height.

Examples

This example shows how to create a PNG image of the specified size, fill it with a solid color and save it to a file.```csharp [C#]

                                                                                                                            string dir = "c:\\temp\\";

                                                                                                                            // Create a PNG image of 100x100 px.
                                                                                                                            using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(100, 100))
                                                                                                                            {
                                                                                                                                // Do some image processing, e.g. fill the entire image in red.
                                                                                                                                Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(pngImage);
                                                                                                                                Aspose.Imaging.Brushes.SolidBrush brush = new Aspose.Imaging.Brushes.SolidBrush(Aspose.Imaging.Color.Red);
                                                                                                                                graphics.FillRectangle(brush, pngImage.Bounds);

                                                                                                                                // Save to a file.
                                                                                                                                pngImage.Save(dir + "output.png");
                                                                                                                            }

### <a id="Aspose_Imaging_FileFormats_Png_PngImage__ctor_System_String_"></a> PngImage\(string\)

Constructs a new instance of the Aspose.Imaging.FileFormats.Png.PngImage class using the path 
parameter to specify the location of the image file to load. This constructor 
enables developers to conveniently create PNG images by loading them from a file, 
simplifying the process of working with PNG images in their applications.

```csharp
public PngImage(string path)

Parameters

path string

The path to load an image.

Examples

This example shows how to load a PNG image from a file.```csharp [C#]

                                                              string dir = "c:\\temp\\";

                                                              // Load a PNG image from a file.
                                                              using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(dir + "sample.png"))
                                                              {
                                                                  // Transform the image to grayscale representation
                                                                  pngImage.Grayscale();

                                                                  // Save to a file.
                                                                  pngImage.Save(dir + "sample.grayscale.png");
                                                              }

### <a id="Aspose_Imaging_FileFormats_Png_PngImage__ctor_Aspose_Imaging_RasterImage_"></a> PngImage\(RasterImage\)

Creates a new instance of the Aspose.Imaging.FileFormats.Png.PngImage class by providing a raster 
image as a parameter. This constructor allows developers to directly initialize a 
PNG image object using an existing raster image, streamlining the process of 
working with PNG images in their applications.

```csharp
public PngImage(RasterImage rasterImage)

Parameters

rasterImage RasterImage

The raster image.

Examples

This example shows how to load PNG image from a BMP image.```csharp [C#]

                                                                 string dir = "c:\\temp\\";

                                                                 // Load a TrueColor PNG image from a BMP image.
                                                                 // First, create a temporal BMP image that will be a foundation for building a PNG image.
                                                                 // You can also load BMP image from a file or use an image of any other raster format.
                                                                 using (Aspose.Imaging.FileFormats.Bmp.BmpImage bmpImage = new Aspose.Imaging.FileFormats.Bmp.BmpImage(100, 100))
                                                                 {
                                                                     // Fill the entire BMP image in red.
                                                                     Aspose.Imaging.Graphics gr = new Aspose.Imaging.Graphics(bmpImage);
                                                                     Aspose.Imaging.Brushes.SolidBrush brush = new Aspose.Imaging.Brushes.SolidBrush(Aspose.Imaging.Color.Red);
                                                                     gr.FillRectangle(brush, bmpImage.Bounds);

                                                                     using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(bmpImage))
                                                                     {
                                                                         System.Console.WriteLine("The PNG color type: {0}", pngImage.GetOriginalOptions());
                                                                         pngImage.Save(dir + "output.png");
                                                                     }
                                                                 }

### <a id="Aspose_Imaging_FileFormats_Png_PngImage__ctor_System_String_Aspose_Imaging_FileFormats_Png_PngColorType_"></a> PngImage\(string, PngColorType\)

Initializes a new instance of the Aspose.Imaging.FileFormats.Png.PngImage class by specifying the 
path to the image file and the color type. This constructor allows for convenient 
creation of PNG images from files with different color types, providing 
flexibility in handling various image formats.

```csharp
public PngImage(string path, PngColorType colorType)

Parameters

path string

The path to load an image.

colorType PngColorType

The color type.

Examples

This example shows how to load a PNG image from a file with the specified color type.```csharp [C#]

                                                                                            string dir = "c:\\temp\\";

                                                                                            // Load a PNG image from a file.
                                                                                            // Note that the colorful image will be converted to grayscale automatically.
                                                                                            using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(dir + "sample.png", Aspose.Imaging.FileFormats.Png.PngColorType.Grayscale))
                                                                                            {
                                                                                                // Save to a file.
                                                                                                pngImage.Save(dir + "sample.grayscale.png");
                                                                                            }

#### Exceptions

 [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception)

### <a id="Aspose_Imaging_FileFormats_Png_PngImage__ctor_Aspose_Imaging_RasterImage_Aspose_Imaging_FileFormats_Png_PngColorType_"></a> PngImage\(RasterImage, PngColorType\)

Creates a new instance of the Aspose.Imaging.FileFormats.Png.PngImage class by specifying a 
raster image and a color type. This constructor enables developers to directly 
convert raster images into PNG format while specifying the desired color type, 
offering flexibility in color representation.

```csharp
public PngImage(RasterImage rasterImage, PngColorType colorType)

Parameters

rasterImage RasterImage

The raster image.

colorType PngColorType

The color type.

Examples

This example shows how to load PNG image from a BMP image with the specified color type.```csharp [C#]

                                                                                               string dir = "c:\\temp\\";

                                                                                               // Load a grayscale PNG image from a colored BMP image.
                                                                                               // First, create a temporal BMP image that will be a foundation for building a PNG image.
                                                                                               // You can also load BMP image from a file or use an image of any other raster format.
                                                                                               using (Aspose.Imaging.FileFormats.Bmp.BmpImage bmpImage = new Aspose.Imaging.FileFormats.Bmp.BmpImage(100, 100))
                                                                                               {
                                                                                                   // Fill the entire BMP image in red.
                                                                                                   Aspose.Imaging.Graphics gr = new Aspose.Imaging.Graphics(bmpImage);
                                                                                                   Aspose.Imaging.Brushes.SolidBrush brush = new Aspose.Imaging.Brushes.SolidBrush(Aspose.Imaging.Color.Red);
                                                                                                   gr.FillRectangle(brush, bmpImage.Bounds);

                                                                                                   // The colors of the image pixels will be converted to their grayscale counterparts.
                                                                                                   using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(bmpImage, Aspose.Imaging.FileFormats.Png.PngColorType.Grayscale))
                                                                                                   {
                                                                                                       pngImage.Save(dir + "output.grayscale.png");
                                                                                                   }
                                                                                               }

### <a id="Aspose_Imaging_FileFormats_Png_PngImage__ctor_System_IO_Stream_"></a> PngImage\(Stream\)

Creates a new instance of the Aspose.Imaging.FileFormats.Png.PngImage class by initializing it 
with a stream. This constructor allows developers to load PNG images directly 
from a stream, providing flexibility in image retrieval from different sources.

```csharp
public PngImage(Stream stream)

Parameters

stream Stream

The stream to load an image.

Examples

This example shows how to load a PNG image from a file or a file stream.```csharp [C#]

                                                                               string dir = "c:\\temp\\";

                                                                               // Load a PNG image from a file stream.
                                                                               using (System.IO.Stream stream = System.IO.File.OpenRead(dir + "sample.png"))
                                                                               {
                                                                                   using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(stream))
                                                                                   {
                                                                                       // Transform the image to grayscale representation
                                                                                       pngImage.Grayscale();

                                                                                       // Save to a file.
                                                                                       pngImage.Save(dir + "sample.grayscale.png");
                                                                                   }
                                                                               }

### <a id="Aspose_Imaging_FileFormats_Png_PngImage__ctor_System_Int32_System_Int32_Aspose_Imaging_FileFormats_Png_PngColorType_"></a> PngImage\(int, int, PngColorType\)

Instantiate a fresh instance of the Aspose.Imaging.FileFormats.Png.PngImage class, specifying 
the desired width, height, and color type parameters. This constructor enables 
swift creation of PNG images with tailored dimensions and color configurations, 
facilitating streamlined image generation for various applications and workflows.

```csharp
public PngImage(int width, int height, PngColorType colorType)

Parameters

width int

The width.

height int

The height.

colorType PngColorType

The color type.

Examples

This example shows how to create a PNG image of the specified size with the specified color type, fill it with a solid color and save it to a file.```csharp [C#]

                                                                                                                                                          string dir = "c:\\temp\\";

                                                                                                                                                          // Create a grayscale PNG image of 100x100 px.
                                                                                                                                                          // All colors will be automatically converted to the grayscale format.
                                                                                                                                                          using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(100, 100, Aspose.Imaging.FileFormats.Png.PngColorType.Grayscale))
                                                                                                                                                          {
                                                                                                                                                              // Do some image processing, e.g. fill the entire image in red.
                                                                                                                                                              Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(pngImage);
                                                                                                                                                              Aspose.Imaging.Brushes.SolidBrush brush = new Aspose.Imaging.Brushes.SolidBrush(Aspose.Imaging.Color.Red);
                                                                                                                                                              graphics.FillRectangle(brush, pngImage.Bounds);

                                                                                                                                                              // Save to a file.
                                                                                                                                                              pngImage.Save(dir + "output.grayscale.png");
                                                                                                                                                          }

### <a id="Aspose_Imaging_FileFormats_Png_PngImage__ctor_Aspose_Imaging_ImageOptions_PngOptions_System_Int32_System_Int32_"></a> PngImage\(PngOptions, int, int\)

Initialize a new instance of the Aspose.Imaging.FileFormats.Png.PngImage class, incorporating 
PNG options alongside width and height parameters. This constructor empowers 
developers to create PNG images with customizable settings and dimensions, 
offering flexibility in image generation for diverse use cases.

```csharp
public PngImage(PngOptions pngOptions, int width, int height)

Parameters

pngOptions PngOptions

The png options.

width int

The width.

height int

The height.

Examples

This example shows how to create a PNG image with the specified options, fill it with a linear gradient colors and save it to a file.```csharp [C#]

                                                                                                                                            string dir = "c:\\temp\\";

                                                                                                                                            Aspose.Imaging.ImageOptions.PngOptions createOptions = new Aspose.Imaging.ImageOptions.PngOptions();

                                                                                                                                            // The number of bits per color channel
                                                                                                                                            createOptions.BitDepth = 8;

                                                                                                                                            // Each pixel is a (red, green, blue) triple followed by the alpha component.
                                                                                                                                            createOptions.ColorType = Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;

                                                                                                                                            // The maximum level of compression.
                                                                                                                                            createOptions.CompressionLevel = 9;

                                                                                                                                            // Usage of filters allows to compress continuous tonal images more effectively.
                                                                                                                                            createOptions.FilterType = Aspose.Imaging.FileFormats.Png.PngFilterType.Sub;

                                                                                                                                            // Use progressive loading
                                                                                                                                            createOptions.Progressive = true;

                                                                                                                                            // Create a PNG image with custom parameters.
                                                                                                                                            using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(createOptions, 100, 100))
                                                                                                                                            {
                                                                                                                                                Aspose.Imaging.Brushes.LinearGradientBrush gradientBrush = new Aspose.Imaging.Brushes.LinearGradientBrush(
                                                                                                                                                        new Aspose.Imaging.Point(0, 0),
                                                                                                                                                        new Aspose.Imaging.Point(pngImage.Width, pngImage.Height),
                                                                                                                                                        Aspose.Imaging.Color.Blue,
                                                                                                                                                        Aspose.Imaging.Color.Transparent);

                                                                                                                                                Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(pngImage);

                                                                                                                                                // Fill the image with a semi-transparent gradient.
                                                                                                                                                graphics.FillRectangle(gradientBrush, pngImage.Bounds);

                                                                                                                                                // Save to a file.
                                                                                                                                                pngImage.Save(dir + "output.explicitoptions.png");
                                                                                                                                            }

## Properties

### <a id="Aspose_Imaging_FileFormats_Png_PngImage_BackgroundColor"></a> BackgroundColor

Retrieves the background color of the image, if one is specified. This property 
is helpful for applications that need to identify and potentially manipulate 
the background color of an image.

```csharp
public override Color BackgroundColor { get; set; }

Property Value

Color

Examples

The following example shows how to set fully transparent colors for a part of a TrueColor PNG image which doesn’t support alpha channel.```csharp [C#]

                                                                                                                                               Aspose.Imaging.ImageOptions.PngOptions createOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                                                                               createOptions.Source = new Aspose.Imaging.Sources.FileCreateSource("c:\\temp\\transparent.png", false);
                                                                                                                                               createOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.Truecolor;

                                                                                                                                               // Create a TrueColor PNG image of 100x100 px.
                                                                                                                                               using (Aspose.Imaging.Image image = Image.Create(createOptions, 100, 100))
                                                                                                                                               {
                                                                                                                                                   Aspose.Imaging.FileFormats.Png.PngImage pngImage = (Aspose.Imaging.FileFormats.Png.PngImage)image;
                                                                                                                                                   Aspose.Imaging.Graphics gr = new Aspose.Imaging.Graphics(pngImage);

                                                                                                                                                   // All red pixels will be considered as fully transparent.
                                                                                                                                                   pngImage.TransparentColor = Aspose.Imaging.Color.Red;
                                                                                                                                                   pngImage.HasTransparentColor = true;

                                                                                                                                                   // All transparent pixels will have a background color.
                                                                                                                                                   pngImage.BackgroundColor = Aspose.Imaging.Color.Green;
                                                                                                                                                   pngImage.HasBackgroundColor = true;

                                                                                                                                                   // Fill the entire image with white color.
                                                                                                                                                   gr.FillRectangle(new Aspose.Imaging.Brushes.SolidBrush(Aspose.Imaging.Color.White), pngImage.Bounds);

                                                                                                                                                   // Fill the top-left quarter of the image with the transparent color.
                                                                                                                                                   // This makes the top-left quarter colored in the background color.
                                                                                                                                                   Rectangle rect = new Rectangle(0, 0, pngImage.Width / 2, pngImage.Height / 2);
                                                                                                                                                   gr.FillRectangle(new Aspose.Imaging.Brushes.SolidBrush(Aspose.Imaging.Color.Red), rect);

                                                                                                                                                   pngImage.Save();
                                                                                                                                               }

### <a id="Aspose_Imaging_FileFormats_Png_PngImage_BitsPerPixel"></a> BitsPerPixel

Retrieve the bits per pixel value for the image. This property provides crucial 
information regarding the color depth of the image, enabling developers to 
understand the level of detail and color accuracy present in the image data.

```csharp
public override int BitsPerPixel { get; }

Property Value

int

FileFormat

Retrieves the format of the file associated with the image instance. This property provides essential information regarding the file type, enabling efficient handling and processing based on the specific format requirements.

public override FileFormat FileFormat { get; }

Property Value

FileFormat

HasAlpha

Returns a boolean value indicating whether the image has an alpha channel, which determines its transparency. This property is useful for applications that need to handle transparency, allowing developers to determine whether additional processing is required to handle transparent areas in the image.

public override bool HasAlpha { get; }

Property Value

bool

Examples

The following example shows how to check if a PNG image supports alpha-channel.```csharp [C#]

                                                                                      // Get all supported PNG color types.
                                                                                      System.Array colorTypes = System.Enum.GetValues(typeof(Aspose.Imaging.FileFormats.Png.PngColorType));

                                                                                      foreach (Aspose.Imaging.FileFormats.Png.PngColorType colorType in colorTypes)
                                                                                      {
                                                                                          Aspose.Imaging.ImageOptions.PngOptions createOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                          createOptions.Source = new Sources.StreamSource(new System.IO.MemoryStream());
                                                                                          createOptions.ColorType = colorType;

                                                                                          using (Aspose.Imaging.Image image = Image.Create(createOptions, 100, 100))
                                                                                          {
                                                                                              Aspose.Imaging.FileFormats.Png.PngImage pngImage = (Aspose.Imaging.FileFormats.Png.PngImage)image;

                                                                                              if (pngImage.HasAlpha)
                                                                                              {
                                                                                                  System.Console.WriteLine("A {0} PNG image supports alpha channel", createOptions.ColorType);
                                                                                              }
                                                                                              else
                                                                                              {
                                                                                                  System.Console.WriteLine("A {0} PNG image doesn't support alpha channel", createOptions.ColorType);
                                                                                              }
                                                                                          }
                                                                                      }

                                                                                      // The output looks like this:
                                                                                      // A Grayscale PNG image doesn't support alpha channel
                                                                                      // A Truecolor PNG image doesn't support alpha channel
                                                                                      // A IndexedColor PNG image doesn't support alpha channel
                                                                                      // A GrayscaleWithAlpha PNG image supports alpha channel
                                                                                      // A TruecolorWithAlpha PNG image supports alpha channel

### <a id="Aspose_Imaging_FileFormats_Png_PngImage_HasBackgroundColor"></a> HasBackgroundColor

Retrieves a boolean value indicating whether the image has a background color. 
This property is useful for applications needing to determine if an image 
includes a background color, which can be important for various processing 
tasks such as compositing, rendering, or exporting.

```csharp
public override bool HasBackgroundColor { get; set; }

Property Value

bool

Examples

The following example shows how to set fully transparent colors for a part of a TrueColor PNG image which doesn’t support alpha channel.```csharp [C#]

                                                                                                                                               Aspose.Imaging.ImageOptions.PngOptions createOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                                                                               createOptions.Source = new Aspose.Imaging.Sources.FileCreateSource("c:\\temp\\transparent.png", false);
                                                                                                                                               createOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.Truecolor;

                                                                                                                                               // Create a TrueColor PNG image of 100x100 px.
                                                                                                                                               using (Aspose.Imaging.Image image = Image.Create(createOptions, 100, 100))
                                                                                                                                               {
                                                                                                                                                   Aspose.Imaging.FileFormats.Png.PngImage pngImage = (Aspose.Imaging.FileFormats.Png.PngImage)image;
                                                                                                                                                   Aspose.Imaging.Graphics gr = new Aspose.Imaging.Graphics(pngImage);

                                                                                                                                                   // All red pixels will be considered as fully transparent.
                                                                                                                                                   pngImage.TransparentColor = Aspose.Imaging.Color.Red;
                                                                                                                                                   pngImage.HasTransparentColor = true;

                                                                                                                                                   // All transparent pixels will have a background color.
                                                                                                                                                   pngImage.BackgroundColor = Aspose.Imaging.Color.Green;
                                                                                                                                                   pngImage.HasBackgroundColor = true;

                                                                                                                                                   // Fill the entire image with white color.
                                                                                                                                                   gr.FillRectangle(new Aspose.Imaging.Brushes.SolidBrush(Aspose.Imaging.Color.White), pngImage.Bounds);

                                                                                                                                                   // Fill the top-left quarter of the image with the transparent color.
                                                                                                                                                   // This makes the top-left quarter colored in the background color.
                                                                                                                                                   Rectangle rect = new Rectangle(0, 0, pngImage.Width / 2, pngImage.Height / 2);
                                                                                                                                                   gr.FillRectangle(new Aspose.Imaging.Brushes.SolidBrush(Aspose.Imaging.Color.Red), rect);

                                                                                                                                                   pngImage.Save();
                                                                                                                                               }

### <a id="Aspose_Imaging_FileFormats_Png_PngImage_HasTransparentColor"></a> HasTransparentColor

Provides a boolean value indicating whether the image contains a transparent 
color. This property is crucial for applications that need to handle 
transparency, allowing developers to determine whether additional processing is 
required to handle transparent regions in the image.

```csharp
public override bool HasTransparentColor { get; set; }

Property Value

bool

Examples

The following example shows how to set fully transparent colors for a part of a TrueColor PNG image which doesn’t support alpha channel.```csharp [C#]

                                                                                                                                               Aspose.Imaging.ImageOptions.PngOptions createOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                                                                               createOptions.Source = new Aspose.Imaging.Sources.FileCreateSource("c:\\temp\\transparent.png", false);
                                                                                                                                               createOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.Truecolor;

                                                                                                                                               // Create a TrueColor PNG image of 100x100 px.
                                                                                                                                               using (Aspose.Imaging.Image image = Image.Create(createOptions, 100, 100))
                                                                                                                                               {
                                                                                                                                                   Aspose.Imaging.FileFormats.Png.PngImage pngImage = (Aspose.Imaging.FileFormats.Png.PngImage)image;
                                                                                                                                                   Aspose.Imaging.Graphics gr = new Aspose.Imaging.Graphics(pngImage);

                                                                                                                                                   // All red pixels will be considered as fully transparent.
                                                                                                                                                   pngImage.TransparentColor = Aspose.Imaging.Color.Red;
                                                                                                                                                   pngImage.HasTransparentColor = true;

                                                                                                                                                   // All transparent pixels will have a background color.
                                                                                                                                                   pngImage.BackgroundColor = Aspose.Imaging.Color.Green;
                                                                                                                                                   pngImage.HasBackgroundColor = true;

                                                                                                                                                   // Fill the entire image with white color.
                                                                                                                                                   gr.FillRectangle(new Aspose.Imaging.Brushes.SolidBrush(Aspose.Imaging.Color.White), pngImage.Bounds);

                                                                                                                                                   // Fill the top-left quarter of the image with the transparent color.
                                                                                                                                                   // This makes the top-left quarter colored in the background color.
                                                                                                                                                   Rectangle rect = new Rectangle(0, 0, pngImage.Width / 2, pngImage.Height / 2);
                                                                                                                                                   gr.FillRectangle(new Aspose.Imaging.Brushes.SolidBrush(Aspose.Imaging.Color.Red), rect);

                                                                                                                                                   pngImage.Save();
                                                                                                                                               }

### <a id="Aspose_Imaging_FileFormats_Png_PngImage_Height"></a> Height

Obtain the height of the image. This property returns the vertical dimension of 
the image, allowing developers to determine its size in pixels along the 
vertical axis.

```csharp
public override int Height { get; }

Property Value

int

HorizontalResolution

Retrieve or modify the horizontal resolution of the image. This property represents the number of pixels per inch along the horizontal axis of the image. Adjusting this resolution can affect the physical size of the image when printed or displayed.

public override double HorizontalResolution { get; set; }

Property Value

double

Examples

The following example shows how to set horizontal/vertical resolution of a PNG image.```csharp [C#]

                                                                                            string dir = "c:\\temp\\";

                                                                                            using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Load(dir + "sample.png"))
                                                                                            {
                                                                                                Aspose.Imaging.FileFormats.Png.PngImage pngImage = (Aspose.Imaging.FileFormats.Png.PngImage)image;

                                                                                                // Get horizontal and vertical resolution of the PngImage.
                                                                                                double horizontalResolution = pngImage.HorizontalResolution;
                                                                                                double verticalResolution = pngImage.VerticalResolution;
                                                                                                System.Console.WriteLine("The horizontal resolution, in pixels per inch: {0}", horizontalResolution);
                                                                                                System.Console.WriteLine("The vertical resolution, in pixels per inch: {0}", verticalResolution);

                                                                                                if (horizontalResolution != 96.0 || verticalResolution != 96.0)
                                                                                                {
                                                                                                    // Use the SetResolution method for updating both resolution values in a single call.
                                                                                                    System.Console.WriteLine("Set resolution values to 96 dpi");
                                                                                                    pngImage.SetResolution(96.0, 96.0);

                                                                                                    System.Console.WriteLine("The horizontal resolution, in pixels per inch: {0}", pngImage.HorizontalResolution);
                                                                                                    System.Console.WriteLine("The vertical resolution, in pixels per inch: {0}", pngImage.VerticalResolution);
                                                                                                }
                                                                                            }

### <a id="Aspose_Imaging_FileFormats_Png_PngImage_Interlaced"></a> Interlaced

Retrieves a boolean value indicating whether the Aspose.Imaging.FileFormats.Png.PngImage is 
interlaced, which determines if the image data is stored in a progressive 
manner for faster loading or transmission.

```csharp
public bool Interlaced { get; }

Property Value

bool

IsInterlaced

Returns a boolean value indicating if the image instance is interlaced. This property is crucial for optimizing loading strategies and ensuring efficient performance during image processing or display tasks.

public bool IsInterlaced { get; }

Property Value

bool

RawDataFormat

Accesses the raw data format of the image. This property provides insight into how the image data is structured internally, which can be useful for advanced image processing tasks or format conversion.

public override PixelDataFormat RawDataFormat { get; }

Property Value

PixelDataFormat

Examples

The following example loads PNG images and prints information about raw data format and alpha channel.```csharp [C#]

                                                                                                             // The PNG images to load.
                                                                                                             string[] fileNames = new string[]
                                                                                                             {
                                                                                                                 @"c:\temp\sample.png",
                                                                                                                 @"c:\temp\alpha.png",
                                                                                                             };

                                                                                                             foreach (string fileName in fileNames)
                                                                                                             {
                                                                                                                 using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Load(fileName))
                                                                                                                 {
                                                                                                                     Aspose.Imaging.FileFormats.Png.PngImage pngImage = (Aspose.Imaging.FileFormats.Png.PngImage)image;
                                                                                                                     System.Console.WriteLine("ImageFile={0}, FileFormat={1}, HasAlpha={2}", fileName, pngImage.RawDataFormat, pngImage.HasAlpha);
                                                                                                                 }
                                                                                                             }

                                                                                                             // The output may look like this:
                                                                                                             // ImageFile=c:\temp\sample.png, FileFormat=Rgb24Bpp, used channels: 8,8,8, HasAlpha=False
                                                                                                             // ImageFile=c:\temp\alpha.png, FileFormat=RGBA32Bpp, used channels: 8,8,8,8, HasAlpha=True

### <a id="Aspose_Imaging_FileFormats_Png_PngImage_TransparentColor"></a> TransparentColor

Retrieves the transparent color of the image, if it exists. This property is 
valuable for applications requiring precise handling of transparent areas 
within images, allowing developers to access and manipulate the specific 
transparent color used.

```csharp
public override Color TransparentColor { get; set; }

Property Value

Color

Examples

The following example shows how to set fully transparent colors for a part of a TrueColor PNG image which doesn’t support alpha channel.```csharp [C#]

                                                                                                                                               Aspose.Imaging.ImageOptions.PngOptions createOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                                                                               createOptions.Source = new Aspose.Imaging.Sources.FileCreateSource("c:\\temp\\transparent.png", false);
                                                                                                                                               createOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.Truecolor;

                                                                                                                                               // Create a TrueColor PNG image of 100x100 px.
                                                                                                                                               using (Aspose.Imaging.Image image = Image.Create(createOptions, 100, 100))
                                                                                                                                               {
                                                                                                                                                   Aspose.Imaging.FileFormats.Png.PngImage pngImage = (Aspose.Imaging.FileFormats.Png.PngImage)image;
                                                                                                                                                   Aspose.Imaging.Graphics gr = new Aspose.Imaging.Graphics(pngImage);

                                                                                                                                                   // All red pixels will be considered as fully transparent.
                                                                                                                                                   pngImage.TransparentColor = Aspose.Imaging.Color.Red;
                                                                                                                                                   pngImage.HasTransparentColor = true;

                                                                                                                                                   // All transparent pixels will have a background color.
                                                                                                                                                   pngImage.BackgroundColor = Aspose.Imaging.Color.Green;
                                                                                                                                                   pngImage.HasBackgroundColor = true;

                                                                                                                                                   // Fill the entire image with white color.
                                                                                                                                                   gr.FillRectangle(new Aspose.Imaging.Brushes.SolidBrush(Aspose.Imaging.Color.White), pngImage.Bounds);

                                                                                                                                                   // Fill the top-left quarter of the image with the transparent color.
                                                                                                                                                   // This makes the top-left quarter colored in the background color.
                                                                                                                                                   Rectangle rect = new Rectangle(0, 0, pngImage.Width / 2, pngImage.Height / 2);
                                                                                                                                                   gr.FillRectangle(new Aspose.Imaging.Brushes.SolidBrush(Aspose.Imaging.Color.Red), rect);

                                                                                                                                                   pngImage.Save();
                                                                                                                                               }

### <a id="Aspose_Imaging_FileFormats_Png_PngImage_VerticalResolution"></a> VerticalResolution

Provides access to the vertical resolution of the image. Developers can use 
this property to retrieve or modify the resolution setting, which indicates the 
number of pixels per inch (PPI) along the vertical axis of the image.

```csharp
public override double VerticalResolution { get; set; }

Property Value

double

Examples

The following example shows how to set horizontal/vertical resolution of a PNG image.```csharp [C#]

                                                                                            string dir = "c:\\temp\\";

                                                                                            using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Load(dir + "sample.png"))
                                                                                            {
                                                                                                Aspose.Imaging.FileFormats.Png.PngImage pngImage = (Aspose.Imaging.FileFormats.Png.PngImage)image;

                                                                                                // Get horizontal and vertical resolution of the PngImage.
                                                                                                double horizontalResolution = pngImage.HorizontalResolution;
                                                                                                double verticalResolution = pngImage.VerticalResolution;
                                                                                                System.Console.WriteLine("The horizontal resolution, in pixels per inch: {0}", horizontalResolution);
                                                                                                System.Console.WriteLine("The vertical resolution, in pixels per inch: {0}", verticalResolution);

                                                                                                if (horizontalResolution != 96.0 || verticalResolution != 96.0)
                                                                                                {
                                                                                                    // Use the SetResolution method for updating both resolution values in a single call.
                                                                                                    System.Console.WriteLine("Set resolution values to 96 dpi");
                                                                                                    pngImage.SetResolution(96.0, 96.0);

                                                                                                    System.Console.WriteLine("The horizontal resolution, in pixels per inch: {0}", pngImage.HorizontalResolution);
                                                                                                    System.Console.WriteLine("The vertical resolution, in pixels per inch: {0}", pngImage.VerticalResolution);
                                                                                                }
                                                                                            }

### <a id="Aspose_Imaging_FileFormats_Png_PngImage_Width"></a> Width

Allows retrieval of the width of the image, providing essential information 
about its dimensions. This property is frequently used by developers to 
determine the image's width, enabling them to perform various operations based 
on its size

```csharp
public override int Width { get; }

Property Value

int

XmpData

Accesses or modifies the Extensible Metadata Platform (XMP) metadata associated with the image. This property facilitates the extraction, modification, or addition of metadata, enabling comprehensive management of image-related information.

public override XmpPacketWrapper XmpData { get; set; }

Property Value

XmpPacketWrapper

Methods

GetDefaultOptions(object[])

Gets the default options.

public override ImageOptionsBase GetDefaultOptions(object[] args)

Parameters

args object[]

The arguments.

Returns

ImageOptionsBase

Default options

GetModifyDate(bool)

Retrieves the timestamp indicating the most recent modification of the resource image. This method provides access to vital metadata, enabling applications to ascertain when the image was last altered, facilitating version tracking and content management.

public override DateTime GetModifyDate(bool useDefault)

Parameters

useDefault bool

if set to true uses the information from FileInfo as default value.

Returns

DateTime

The date and time the resource image was last modified.

GetOriginalOptions()

Gets the options based on the original file settings. This can be helpful to keep bit-depth and other parameters of the original image unchanged. For example, if we load a black-white PNG image with 1 bit per pixel and then save it using the Aspose.Imaging.DataStreamSupporter.Save(System.String) method, the output PNG image with 8-bit per pixel will be produced. To avoid it and save PNG image with 1-bit per pixel, use this method to get corresponding saving options and pass them to the Aspose.Imaging.Image.Save(System.String,Aspose.Imaging.ImageOptionsBase) method as the second parameter.

public override ImageOptionsBase GetOriginalOptions()

Returns

ImageOptionsBase

The options based on the original file settings.

OnPaletteChanged(IColorPalette, IColorPalette)

Called when palette is changed.

protected override void OnPaletteChanged(IColorPalette oldPalette, IColorPalette newPalette)

Parameters

oldPalette IColorPalette

The old palette.

newPalette IColorPalette

The new palette.

SaveData(Stream)

The save data.

protected override void SaveData(Stream stream)

Parameters

stream Stream

The stream.

UpdateDimensions(int, int)

The update dimensions.

protected override void UpdateDimensions(int newWidth, int newHeight)

Parameters

newWidth int

The new width.

newHeight int

The new height.

UpdateMetadata()

Updates the image last modification date and time.

protected override void UpdateMetadata()