// // Copyright (c) James Jackson-South and contributors. // Licensed under the Apache License, Version 2.0. // namespace ImageProcessorCore { using System.IO; using Formats; /// /// Extension methods for the type. /// public static partial class ImageExtensions { /// /// Saves the image to the given stream with the bmp format. /// /// The pixel format. /// The packed format. uint, long, float. /// The image this method extends. /// The stream to save the image to. /// Thrown if the stream is null. public static void SaveAsBmp(this Image source, Stream stream) where TColor : IPackedVector where TPacked : struct => new BmpEncoder().Encode(source, stream); /// /// Saves the image to the given stream with the png format. /// /// The pixel format. /// The packed format. uint, long, float. /// The image this method extends. /// The stream to save the image to. /// The quality to save the image to representing the number of colors. /// Anything equal to 256 and below will cause the encoder to save the image in an indexed format. /// /// Thrown if the stream is null. public static void SaveAsPng(this Image source, Stream stream, int quality = int.MaxValue) where TColor : IPackedVector where TPacked : struct => new PngEncoder { Quality = quality }.Encode(source, stream); /// /// Saves the image to the given stream with the jpeg format. /// /// The pixel format. /// The packed format. uint, long, float. /// The image this method extends. /// The stream to save the image to. /// The quality to save the image to. Between 1 and 100. /// Thrown if the stream is null. public static void SaveAsJpeg(this Image source, Stream stream, int quality = 75) where TColor : IPackedVector where TPacked : struct => new JpegEncoder { Quality = quality }.Encode(source, stream); /// /// Saves the image to the given stream with the gif format. /// /// The pixel format. /// The packed format. uint, long, float. /// The image this method extends. /// The stream to save the image to. /// The quality to save the image to representing the number of colors. Between 1 and 256. /// Thrown if the stream is null. internal static void SaveAsGif(this Image source, Stream stream, int quality = 256) where TColor : IPackedVector where TPacked : struct => new GifEncoder { Quality = quality }.Encode(source, stream); } }