ImageExtensionsSaveAsHighColorGif(Image, Stream, Boolean, Color, Byte) Method

Encodes the specified image as a multi-layered, single frame GIF image and writes it into the specified stream, preserving its original color depth.

Definition

Namespace: KGySoft.Drawing
Assembly: KGySoft.Drawing (in KGySoft.Drawing.dll) Version: 8.1.0
C#
public static void SaveAsHighColorGif(
	this Image image,
	Stream stream,
	bool allowFullScan = false,
	Color backColor = default,
	byte alphaThreshold = 128
)

Parameters

image  Image
The Image to save. If contains multiple images or frames, then only the current image or frame will be saved.
stream  Stream
The stream to save the image into.
allowFullScan  Boolean  (Optional)
to allow scanning the whole image for each layers to be able to re-use the local palette of the current layer.
to expand the initial layer area to the local pixels only. This parameter is optional.
Default value: .
backColor  Color  (Optional)
Colors with alpha (transparency), whose Color.A property is equal to or greater than alphaThreshold will be blended with this color during the encoding. The alpha value (Color.A property) of the specified background color is ignored. This parameter is optional.
Default value: Empty, which has the same RGB values as Black.
alphaThreshold  Byte  (Optional)
Specifies a threshold value for the Color.A property, under which a pixel is considered transparent. If 0, then the final composite image will not have transparent pixels. This parameter is optional.
Default value: 128.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type Image. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

Remarks

  Caution

This method produces a GIF image that may have compatibility issues. Though the Image and Bitmap types (at least on Windows) support them as expected as well as applications built on GDI+ (such as Windows Paint), many decoders may treat the result as an animation (including browsers).

If allowFullScan is , then both the processing time and memory usage is higher. It helps to minimize the number of layers of the final image; however, the final image size will not be necessarily smaller, especially for true color images.

If allowFullScan is , then each layer is attempted to be as compact as possible. It allows a very fast processing with lower memory usage. Though it usually produces more layers, the final size will not be necessarily larger, especially for true color images.

  Tip

You can prequantize true color images using a 16-bit quantizer (with or without dithering) to produce fairly compact, still high color GIF images. For such images the allowFullScan parameter with value typically produces more compact results. You can consider using the Argb1555 quantizer for images with transparency, or the Rgb565 quantizer for non-transparent images.

To create a multi-layered image completely manually you can create a GifEncoder instance that provides a lower level access.

Exceptions

ArgumentNullExceptionimage or stream is .

See Also