diff --git a/src/ImageSharp/Formats/Bmp/ImageExtensions.cs b/src/ImageSharp/Formats/Bmp/ImageExtensions.cs
deleted file mode 100644
index 8d97c8b46..000000000
--- a/src/ImageSharp/Formats/Bmp/ImageExtensions.cs
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) Six Labors.
-// Licensed under the Apache License, Version 2.0.
-
-using System.IO;
-using System.Threading.Tasks;
-using SixLabors.ImageSharp.Advanced;
-using SixLabors.ImageSharp.Formats.Bmp;
-
-namespace SixLabors.ImageSharp
-{
- ///
- /// Extension methods for the type.
- ///
- public static partial class ImageExtensions
- {
- ///
- /// Saves the image to the given stream with the bmp format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// Thrown if the path is null.
- public static void SaveAsBmp(this Image source, string path) => SaveAsBmp(source, path, null);
-
- ///
- /// Saves the image to the given stream with the bmp format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// Thrown if the path is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsBmpAsync(this Image source, string path) => SaveAsBmpAsync(source, path, null);
-
- ///
- /// Saves the image to the given stream with the bmp format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the path is null.
- public static void SaveAsBmp(this Image source, string path, BmpEncoder encoder) =>
- source.Save(
- path,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(BmpFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the bmp format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the path is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsBmpAsync(this Image source, string path, BmpEncoder encoder) =>
- source.SaveAsync(
- path,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(BmpFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the bmp format.
- ///
- /// 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) => SaveAsBmp(source, stream, null);
-
- ///
- /// Saves the image to the given stream with the bmp format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// Thrown if the stream is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsBmpAsync(this Image source, Stream stream) => SaveAsBmpAsync(source, stream, null);
-
- ///
- /// Saves the image to the given stream with the bmp format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the stream is null.
- public static void SaveAsBmp(this Image source, Stream stream, BmpEncoder encoder) =>
- source.Save(
- stream,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(BmpFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the bmp format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the stream is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsBmpAsync(this Image source, Stream stream, BmpEncoder encoder) =>
- source.SaveAsync(
- stream,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(BmpFormat.Instance));
- }
-}
diff --git a/src/ImageSharp/Formats/Gif/ImageExtensions.cs b/src/ImageSharp/Formats/Gif/ImageExtensions.cs
deleted file mode 100644
index d262b056c..000000000
--- a/src/ImageSharp/Formats/Gif/ImageExtensions.cs
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) Six Labors.
-// Licensed under the Apache License, Version 2.0.
-
-using System.IO;
-using System.Threading.Tasks;
-using SixLabors.ImageSharp.Advanced;
-using SixLabors.ImageSharp.Formats.Gif;
-
-namespace SixLabors.ImageSharp
-{
- ///
- /// Extension methods for the type.
- ///
- public static partial class ImageExtensions
- {
- ///
- /// Saves the image to the given stream with the gif format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// Thrown if the path is null.
- public static void SaveAsGif(this Image source, string path) => SaveAsGif(source, path, null);
-
- ///
- /// Saves the image to the given stream with the gif format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// Thrown if the path is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsGifAsync(this Image source, string path) => SaveAsGifAsync(source, path, null);
-
- ///
- /// Saves the image to the given stream with the gif format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the path is null.
- public static void SaveAsGif(this Image source, string path, GifEncoder encoder) =>
- source.Save(
- path,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(GifFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the gif format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the path is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsGifAsync(this Image source, string path, GifEncoder encoder) =>
- source.SaveAsync(
- path,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(GifFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the gif format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// Thrown if the stream is null.
- public static void SaveAsGif(this Image source, Stream stream) => SaveAsGif(source, stream, null);
-
- ///
- /// Saves the image to the given stream with the gif format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// Thrown if the stream is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsGifAsync(this Image source, Stream stream) => SaveAsGifAsync(source, stream, null);
-
- ///
- /// Saves the image to the given stream with the gif format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the stream is null.
- public static void SaveAsGif(this Image source, Stream stream, GifEncoder encoder) =>
- source.Save(
- stream,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(GifFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the gif format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the stream is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsGifAsync(this Image source, Stream stream, GifEncoder encoder) =>
- source.SaveAsync(
- stream,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(GifFormat.Instance));
- }
-}
diff --git a/src/ImageSharp/Formats/ImageExtesions.Save.cs b/src/ImageSharp/Formats/ImageExtesions.Save.cs
new file mode 100644
index 000000000..1cf5bf2a7
--- /dev/null
+++ b/src/ImageSharp/Formats/ImageExtesions.Save.cs
@@ -0,0 +1,694 @@
+// Copyright (c) Six Labors.
+// Licensed under the Apache License, Version 2.0.
+
+//
+using System.IO;
+using System.Threading;
+using System.Threading.Tasks;
+using SixLabors.ImageSharp.Advanced;
+
+using SixLabors.ImageSharp.Formats.Bmp;
+using SixLabors.ImageSharp.Formats.Gif;
+using SixLabors.ImageSharp.Formats.Jpeg;
+using SixLabors.ImageSharp.Formats.Png;
+using SixLabors.ImageSharp.Formats.Tga;
+
+namespace SixLabors.ImageSharp
+{
+ ///
+ /// Extension methods for the type.
+ ///
+ public static partial class ImageExtensions
+ {
+ ///
+ /// Saves the image to the given stream with the Bmp format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// Thrown if the path is null.
+ public static void SaveAsBmp(this Image source, string path) => SaveAsBmp(source, path, null);
+
+ ///
+ /// Saves the image to the given stream with the Bmp format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsBmpAsync(this Image source, string path) => SaveAsBmpAsync(source, path, null);
+
+ ///
+ /// Saves the image to the given stream with the Bmp format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsBmpAsync(this Image source, string path, CancellationToken cancellationToken)
+ => SaveAsBmpAsync(source, path, null, cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Bmp format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the path is null.
+ public static void SaveAsBmp(this Image source, string path, BmpEncoder encoder) =>
+ source.Save(
+ path,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(BmpFormat.Instance));
+
+ ///
+ /// Saves the image to the given stream with the Bmp format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsBmpAsync(this Image source, string path, BmpEncoder encoder)
+ => SaveAsBmpAsync(source, path, encoder, default);
+
+ ///
+ /// Saves the image to the given stream with the Bmp format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsBmpAsync(this Image source, string path, BmpEncoder encoder, CancellationToken cancellationToken) =>
+ source.SaveAsync(
+ path,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(BmpFormat.Instance),
+ cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Bmp format.
+ ///
+ /// 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)
+ => SaveAsBmp(source, stream, null);
+
+ ///
+ /// Saves the image to the given stream with the Bmp format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsBmpAsync(this Image source, Stream stream) => SaveAsBmpAsync(source, stream, null);
+
+ ///
+ /// Saves the image to the given stream with the Bmp format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsBmpAsync(this Image source, Stream stream, CancellationToken cancellationToken)
+ => SaveAsBmpAsync(source, stream, null, cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Bmp format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static void SaveAsBmp(this Image source, Stream stream, BmpEncoder encoder)
+ => source.Save(
+ stream,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(BmpFormat.Instance));
+
+ ///
+ /// Saves the image to the given stream with the Bmp format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsBmpAsync(this Image source, Stream stream, BmpEncoder encoder)
+ => SaveAsBmpAsync(source, stream, encoder, default);
+
+ ///
+ /// Saves the image to the given stream with the Bmp format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsBmpAsync(this Image source, Stream stream, BmpEncoder encoder, CancellationToken cancellationToken) =>
+ source.SaveAsync(
+ stream,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(BmpFormat.Instance),
+ cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Gif format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// Thrown if the path is null.
+ public static void SaveAsGif(this Image source, string path) => SaveAsGif(source, path, null);
+
+ ///
+ /// Saves the image to the given stream with the Gif format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsGifAsync(this Image source, string path) => SaveAsGifAsync(source, path, null);
+
+ ///
+ /// Saves the image to the given stream with the Gif format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsGifAsync(this Image source, string path, CancellationToken cancellationToken)
+ => SaveAsGifAsync(source, path, null, cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Gif format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the path is null.
+ public static void SaveAsGif(this Image source, string path, GifEncoder encoder) =>
+ source.Save(
+ path,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(GifFormat.Instance));
+
+ ///
+ /// Saves the image to the given stream with the Gif format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsGifAsync(this Image source, string path, GifEncoder encoder)
+ => SaveAsGifAsync(source, path, encoder, default);
+
+ ///
+ /// Saves the image to the given stream with the Gif format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsGifAsync(this Image source, string path, GifEncoder encoder, CancellationToken cancellationToken) =>
+ source.SaveAsync(
+ path,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(BmpFormat.Instance),
+ cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Gif format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// Thrown if the stream is null.
+ public static void SaveAsGif(this Image source, Stream stream)
+ => SaveAsGif(source, stream, null);
+
+ ///
+ /// Saves the image to the given stream with the Gif format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsGifAsync(this Image source, Stream stream) => SaveAsGifAsync(source, stream, null);
+
+ ///
+ /// Saves the image to the given stream with the Gif format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsGifAsync(this Image source, Stream stream, CancellationToken cancellationToken)
+ => SaveAsGifAsync(source, stream, null, cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Gif format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static void SaveAsGif(this Image source, Stream stream, GifEncoder encoder)
+ => source.Save(
+ stream,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(GifFormat.Instance));
+
+ ///
+ /// Saves the image to the given stream with the Gif format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsGifAsync(this Image source, Stream stream, GifEncoder encoder)
+ => SaveAsGifAsync(source, stream, encoder, default);
+
+ ///
+ /// Saves the image to the given stream with the Gif format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsGifAsync(this Image source, Stream stream, GifEncoder encoder, CancellationToken cancellationToken) =>
+ source.SaveAsync(
+ stream,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(GifFormat.Instance),
+ cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Jpeg format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// Thrown if the path is null.
+ public static void SaveAsJpeg(this Image source, string path) => SaveAsJpeg(source, path, null);
+
+ ///
+ /// Saves the image to the given stream with the Jpeg format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsJpegAsync(this Image source, string path) => SaveAsJpegAsync(source, path, null);
+
+ ///
+ /// Saves the image to the given stream with the Jpeg format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsJpegAsync(this Image source, string path, CancellationToken cancellationToken)
+ => SaveAsJpegAsync(source, path, null, cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Jpeg format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the path is null.
+ public static void SaveAsJpeg(this Image source, string path, JpegEncoder encoder) =>
+ source.Save(
+ path,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(JpegFormat.Instance));
+
+ ///
+ /// Saves the image to the given stream with the Jpeg format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsJpegAsync(this Image source, string path, JpegEncoder encoder)
+ => SaveAsJpegAsync(source, path, encoder, default);
+
+ ///
+ /// Saves the image to the given stream with the Jpeg format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsJpegAsync(this Image source, string path, JpegEncoder encoder, CancellationToken cancellationToken) =>
+ source.SaveAsync(
+ path,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(BmpFormat.Instance),
+ cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Jpeg format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// Thrown if the stream is null.
+ public static void SaveAsJpeg(this Image source, Stream stream)
+ => SaveAsJpeg(source, stream, null);
+
+ ///
+ /// Saves the image to the given stream with the Jpeg format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsJpegAsync(this Image source, Stream stream) => SaveAsJpegAsync(source, stream, null);
+
+ ///
+ /// Saves the image to the given stream with the Jpeg format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsJpegAsync(this Image source, Stream stream, CancellationToken cancellationToken)
+ => SaveAsJpegAsync(source, stream, null, cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Jpeg format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static void SaveAsJpeg(this Image source, Stream stream, JpegEncoder encoder)
+ => source.Save(
+ stream,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(JpegFormat.Instance));
+
+ ///
+ /// Saves the image to the given stream with the Jpeg format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsJpegAsync(this Image source, Stream stream, JpegEncoder encoder)
+ => SaveAsJpegAsync(source, stream, encoder, default);
+
+ ///
+ /// Saves the image to the given stream with the Jpeg format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsJpegAsync(this Image source, Stream stream, JpegEncoder encoder, CancellationToken cancellationToken) =>
+ source.SaveAsync(
+ stream,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(JpegFormat.Instance),
+ cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Png format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// Thrown if the path is null.
+ public static void SaveAsPng(this Image source, string path) => SaveAsPng(source, path, null);
+
+ ///
+ /// Saves the image to the given stream with the Png format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsPngAsync(this Image source, string path) => SaveAsPngAsync(source, path, null);
+
+ ///
+ /// Saves the image to the given stream with the Png format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsPngAsync(this Image source, string path, CancellationToken cancellationToken)
+ => SaveAsPngAsync(source, path, null, cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Png format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the path is null.
+ public static void SaveAsPng(this Image source, string path, PngEncoder encoder) =>
+ source.Save(
+ path,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(PngFormat.Instance));
+
+ ///
+ /// Saves the image to the given stream with the Png format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsPngAsync(this Image source, string path, PngEncoder encoder)
+ => SaveAsPngAsync(source, path, encoder, default);
+
+ ///
+ /// Saves the image to the given stream with the Png format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsPngAsync(this Image source, string path, PngEncoder encoder, CancellationToken cancellationToken) =>
+ source.SaveAsync(
+ path,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(BmpFormat.Instance),
+ cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Png format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// Thrown if the stream is null.
+ public static void SaveAsPng(this Image source, Stream stream)
+ => SaveAsPng(source, stream, null);
+
+ ///
+ /// Saves the image to the given stream with the Png format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsPngAsync(this Image source, Stream stream) => SaveAsPngAsync(source, stream, null);
+
+ ///
+ /// Saves the image to the given stream with the Png format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsPngAsync(this Image source, Stream stream, CancellationToken cancellationToken)
+ => SaveAsPngAsync(source, stream, null, cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Png format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static void SaveAsPng(this Image source, Stream stream, PngEncoder encoder)
+ => source.Save(
+ stream,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(PngFormat.Instance));
+
+ ///
+ /// Saves the image to the given stream with the Png format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsPngAsync(this Image source, Stream stream, PngEncoder encoder)
+ => SaveAsPngAsync(source, stream, encoder, default);
+
+ ///
+ /// Saves the image to the given stream with the Png format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsPngAsync(this Image source, Stream stream, PngEncoder encoder, CancellationToken cancellationToken) =>
+ source.SaveAsync(
+ stream,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(PngFormat.Instance),
+ cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Tga format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// Thrown if the path is null.
+ public static void SaveAsTga(this Image source, string path) => SaveAsTga(source, path, null);
+
+ ///
+ /// Saves the image to the given stream with the Tga format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsTgaAsync(this Image source, string path) => SaveAsTgaAsync(source, path, null);
+
+ ///
+ /// Saves the image to the given stream with the Tga format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsTgaAsync(this Image source, string path, CancellationToken cancellationToken)
+ => SaveAsTgaAsync(source, path, null, cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Tga format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the path is null.
+ public static void SaveAsTga(this Image source, string path, TgaEncoder encoder) =>
+ source.Save(
+ path,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(TgaFormat.Instance));
+
+ ///
+ /// Saves the image to the given stream with the Tga format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsTgaAsync(this Image source, string path, TgaEncoder encoder)
+ => SaveAsTgaAsync(source, path, encoder, default);
+
+ ///
+ /// Saves the image to the given stream with the Tga format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsTgaAsync(this Image source, string path, TgaEncoder encoder, CancellationToken cancellationToken) =>
+ source.SaveAsync(
+ path,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(BmpFormat.Instance),
+ cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Tga format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// Thrown if the stream is null.
+ public static void SaveAsTga(this Image source, Stream stream)
+ => SaveAsTga(source, stream, null);
+
+ ///
+ /// Saves the image to the given stream with the Tga format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsTgaAsync(this Image source, Stream stream) => SaveAsTgaAsync(source, stream, null);
+
+ ///
+ /// Saves the image to the given stream with the Tga format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsTgaAsync(this Image source, Stream stream, CancellationToken cancellationToken)
+ => SaveAsTgaAsync(source, stream, null, cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the Tga format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static void SaveAsTga(this Image source, Stream stream, TgaEncoder encoder)
+ => source.Save(
+ stream,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(TgaFormat.Instance));
+
+ ///
+ /// Saves the image to the given stream with the Tga format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsTgaAsync(this Image source, Stream stream, TgaEncoder encoder)
+ => SaveAsTgaAsync(source, stream, encoder, default);
+
+ ///
+ /// Saves the image to the given stream with the Tga format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsTgaAsync(this Image source, Stream stream, TgaEncoder encoder, CancellationToken cancellationToken) =>
+ source.SaveAsync(
+ stream,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(TgaFormat.Instance),
+ cancellationToken);
+
+ }
+}
diff --git a/src/ImageSharp/Formats/ImageExtesions.Save.tt b/src/ImageSharp/Formats/ImageExtesions.Save.tt
new file mode 100644
index 000000000..37aaf5bb7
--- /dev/null
+++ b/src/ImageSharp/Formats/ImageExtesions.Save.tt
@@ -0,0 +1,180 @@
+<#@ template language="C#" #>
+<#@ import namespace="System.Text" #>
+<#@ import namespace="System.Collections.Generic" #>
+// Copyright (c) Six Labors.
+// Licensed under the Apache License, Version 2.0.
+
+//
+using System.IO;
+using System.Threading;
+using System.Threading.Tasks;
+using SixLabors.ImageSharp.Advanced;
+
+<#
+ var formats = new []{
+ "Bmp",
+ "Gif",
+ "Jpeg",
+ "Png",
+ "Tga",
+ };
+
+ foreach (string fmt in formats)
+ {
+#>
+using SixLabors.ImageSharp.Formats.<#= fmt #>;
+<#
+
+ }
+#>
+
+namespace SixLabors.ImageSharp
+{
+ ///
+ /// Extension methods for the type.
+ ///
+ public static partial class ImageExtensions
+ {
+<#
+ foreach (string fmt in formats)
+ {
+#>
+ ///
+ /// Saves the image to the given stream with the <#= fmt #> format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// Thrown if the path is null.
+ public static void SaveAs<#= fmt #>(this Image source, string path) => SaveAs<#= fmt #>(source, path, null);
+
+ ///
+ /// Saves the image to the given stream with the <#= fmt #> format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAs<#= fmt #>Async(this Image source, string path) => SaveAs<#= fmt #>Async(source, path, null);
+
+ ///
+ /// Saves the image to the given stream with the <#= fmt #> format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAs<#= fmt #>Async(this Image source, string path, CancellationToken cancellationToken)
+ => SaveAs<#= fmt #>Async(source, path, null, cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the <#= fmt #> format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the path is null.
+ public static void SaveAs<#= fmt #>(this Image source, string path, <#= fmt #>Encoder encoder) =>
+ source.Save(
+ path,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(<#= fmt #>Format.Instance));
+
+ ///
+ /// Saves the image to the given stream with the <#= fmt #> format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAs<#= fmt #>Async(this Image source, string path, <#= fmt #>Encoder encoder)
+ => SaveAs<#= fmt #>Async(source, path, encoder, default);
+
+ ///
+ /// Saves the image to the given stream with the <#= fmt #> format.
+ ///
+ /// The image this method extends.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAs<#= fmt #>Async(this Image source, string path, <#= fmt #>Encoder encoder, CancellationToken cancellationToken) =>
+ source.SaveAsync(
+ path,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(BmpFormat.Instance),
+ cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the <#= fmt #> format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// Thrown if the stream is null.
+ public static void SaveAs<#= fmt #>(this Image source, Stream stream)
+ => SaveAs<#= fmt #>(source, stream, null);
+
+ ///
+ /// Saves the image to the given stream with the <#= fmt #> format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAs<#= fmt #>Async(this Image source, Stream stream) => SaveAs<#= fmt #>Async(source, stream, null);
+
+ ///
+ /// Saves the image to the given stream with the <#= fmt #> format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAs<#= fmt #>Async(this Image source, Stream stream, CancellationToken cancellationToken)
+ => SaveAs<#= fmt #>Async(source, stream, null, cancellationToken);
+
+ ///
+ /// Saves the image to the given stream with the <#= fmt #> format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static void SaveAs<#= fmt #>(this Image source, Stream stream, <#= fmt #>Encoder encoder)
+ => source.Save(
+ stream,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(<#= fmt #>Format.Instance));
+
+ ///
+ /// Saves the image to the given stream with the <#= fmt #> format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAs<#= fmt #>Async(this Image source, Stream stream, <#= fmt #>Encoder encoder)
+ => SaveAs<#= fmt #>Async(source, stream, encoder, default);
+
+ ///
+ /// Saves the image to the given stream with the <#= fmt #> format.
+ ///
+ /// The image this method extends.
+ /// The stream to save the image to.
+ /// The encoder to save the image with.
+ /// The token to monitor for cancellation requests.
+ /// Thrown if the stream is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAs<#= fmt #>Async(this Image source, Stream stream, <#= fmt #>Encoder encoder, CancellationToken cancellationToken) =>
+ source.SaveAsync(
+ stream,
+ encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(<#= fmt #>Format.Instance),
+ cancellationToken);
+
+<#
+ }
+#>
+ }
+}
diff --git a/src/ImageSharp/Formats/Jpeg/ImageExtensions.cs b/src/ImageSharp/Formats/Jpeg/ImageExtensions.cs
deleted file mode 100644
index d6600b625..000000000
--- a/src/ImageSharp/Formats/Jpeg/ImageExtensions.cs
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) Six Labors.
-// Licensed under the Apache License, Version 2.0.
-
-using System.IO;
-using System.Threading.Tasks;
-using SixLabors.ImageSharp.Advanced;
-using SixLabors.ImageSharp.Formats.Jpeg;
-
-namespace SixLabors.ImageSharp
-{
- ///
- /// Extension methods for the type.
- ///
- public static partial class ImageExtensions
- {
- ///
- /// Saves the image to the given stream with the jpeg format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// Thrown if the path is null.
- public static void SaveAsJpeg(this Image source, string path) => SaveAsJpeg(source, path, null);
-
- ///
- /// Saves the image to the given stream with the jpeg format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// Thrown if the path is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsJpegAsync(this Image source, string path) => SaveAsJpegAsync(source, path, null);
-
- ///
- /// Saves the image to the given stream with the jpeg format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the path is null.
- public static void SaveAsJpeg(this Image source, string path, JpegEncoder encoder) =>
- source.Save(
- path,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(JpegFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the jpeg format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the path is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsJpegAsync(this Image source, string path, JpegEncoder encoder) =>
- source.SaveAsync(
- path,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(JpegFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the jpeg format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// Thrown if the stream is null.
- public static void SaveAsJpeg(this Image source, Stream stream) => SaveAsJpeg(source, stream, null);
-
- ///
- /// Saves the image to the given stream with the jpeg format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// Thrown if the stream is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsJpegAsync(this Image source, Stream stream) => SaveAsJpegAsync(source, stream, null);
-
- ///
- /// Saves the image to the given stream with the jpeg format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the stream is null.
- public static void SaveAsJpeg(this Image source, Stream stream, JpegEncoder encoder) =>
- source.Save(
- stream,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(JpegFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the jpeg format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the stream is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsJpegAsync(this Image source, Stream stream, JpegEncoder encoder) =>
- source.SaveAsync(
- stream,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(JpegFormat.Instance));
- }
-}
diff --git a/src/ImageSharp/Formats/Png/ImageExtensions.cs b/src/ImageSharp/Formats/Png/ImageExtensions.cs
deleted file mode 100644
index e6a5265b2..000000000
--- a/src/ImageSharp/Formats/Png/ImageExtensions.cs
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) Six Labors.
-// Licensed under the Apache License, Version 2.0.
-
-using System.IO;
-using System.Threading.Tasks;
-using SixLabors.ImageSharp.Advanced;
-using SixLabors.ImageSharp.Formats.Png;
-
-namespace SixLabors.ImageSharp
-{
- ///
- /// Extension methods for the type.
- ///
- public static partial class ImageExtensions
- {
- ///
- /// Saves the image to the given stream with the png format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// Thrown if the path is null.
- public static void SaveAsPng(this Image source, string path) => SaveAsPng(source, path, null);
-
- ///
- /// Saves the image to the given stream with the png format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// Thrown if the path is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsPngAsync(this Image source, string path) => SaveAsPngAsync(source, path, null);
-
- ///
- /// Saves the image to the given stream with the png format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the path is null.
- public static void SaveAsPng(this Image source, string path, PngEncoder encoder) =>
- source.Save(
- path,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(PngFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the png format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the path is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsPngAsync(this Image source, string path, PngEncoder encoder) =>
- source.SaveAsync(
- path,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(PngFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the png format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// Thrown if the stream is null.
- public static void SaveAsPng(this Image source, Stream stream) => SaveAsPng(source, stream, null);
-
- ///
- /// Saves the image to the given stream with the png format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// Thrown if the stream is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsPngAsync(this Image source, Stream stream) => SaveAsPngAsync(source, stream, null);
-
- ///
- /// Saves the image to the given stream with the png format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the stream is null.
- public static void SaveAsPng(this Image source, Stream stream, PngEncoder encoder) =>
- source.Save(
- stream,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(PngFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the png format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the stream is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsPngAsync(this Image source, Stream stream, PngEncoder encoder) =>
- source.SaveAsync(
- stream,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(PngFormat.Instance));
- }
-}
diff --git a/src/ImageSharp/Formats/Tga/ImageExtensions.cs b/src/ImageSharp/Formats/Tga/ImageExtensions.cs
deleted file mode 100644
index f39738eae..000000000
--- a/src/ImageSharp/Formats/Tga/ImageExtensions.cs
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) Six Labors.
-// Licensed under the Apache License, Version 2.0.
-
-using System.IO;
-using System.Threading.Tasks;
-using SixLabors.ImageSharp.Advanced;
-using SixLabors.ImageSharp.Formats.Tga;
-
-namespace SixLabors.ImageSharp
-{
- ///
- /// Extension methods for the type.
- ///
- public static partial class ImageExtensions
- {
- ///
- /// Saves the image to the given stream with the tga format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// Thrown if the path is null.
- public static void SaveAsTga(this Image source, string path) => SaveAsTga(source, path, null);
-
- ///
- /// Saves the image to the given stream with the tga format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// Thrown if the path is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsTgaAsync(this Image source, string path) => SaveAsTgaAsync(source, path, null);
-
- ///
- /// Saves the image to the given stream with the tga format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the path is null.
- public static void SaveAsTga(this Image source, string path, TgaEncoder encoder) =>
- source.Save(
- path,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(TgaFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the tga format.
- ///
- /// The image this method extends.
- /// The file path to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the path is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsTgaAsync(this Image source, string path, TgaEncoder encoder) =>
- source.SaveAsync(
- path,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(TgaFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the tga format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// Thrown if the stream is null.
- public static void SaveAsTga(this Image source, Stream stream) => SaveAsTga(source, stream, null);
-
- ///
- /// Saves the image to the given stream with the tga format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// Thrown if the stream is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsTgaAsync(this Image source, Stream stream) => SaveAsTgaAsync(source, stream, null);
-
- ///
- /// Saves the image to the given stream with the tga format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the stream is null.
- public static void SaveAsTga(this Image source, Stream stream, TgaEncoder encoder) =>
- source.Save(
- stream,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(TgaFormat.Instance));
-
- ///
- /// Saves the image to the given stream with the tga format.
- ///
- /// The image this method extends.
- /// The stream to save the image to.
- /// The encoder to save the image with.
- /// Thrown if the stream is null.
- /// A representing the asynchronous operation.
- public static Task SaveAsTgaAsync(this Image source, Stream stream, TgaEncoder encoder) =>
- source.SaveAsync(
- stream,
- encoder ?? source.GetConfiguration().ImageFormatsManager.FindEncoder(TgaFormat.Instance));
- }
-}
diff --git a/src/ImageSharp/ImageExtensions.cs b/src/ImageSharp/ImageExtensions.cs
index b227679a6..5430810b2 100644
--- a/src/ImageSharp/ImageExtensions.cs
+++ b/src/ImageSharp/ImageExtensions.cs
@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using SixLabors.ImageSharp.Advanced;
using SixLabors.ImageSharp.Formats;
@@ -35,6 +36,17 @@ namespace SixLabors.ImageSharp
public static Task SaveAsync(this Image source, string path)
=> source.SaveAsync(path, source.DetectEncoder(path));
+ ///
+ /// Writes the image to the given stream using the currently loaded image format.
+ ///
+ /// The source image.
+ /// The file path to save the image to.
+ /// The token to monitor for cancellation requests.
+ /// The path is null.
+ /// A representing the asynchronous operation.
+ public static Task SaveAsync(this Image source, string path, CancellationToken cancellationToken)
+ => source.SaveAsync(path, source.DetectEncoder(path), cancellationToken);
+
///
/// Writes the image to the given stream using the currently loaded image format.
///
@@ -62,14 +74,29 @@ namespace SixLabors.ImageSharp
/// The path is null.
/// The encoder is null.
/// A representing the asynchronous operation.
- public static async Task SaveAsync(this Image source, string path, IImageEncoder encoder)
+ public static Task SaveAsync(this Image source, string path, IImageEncoder encoder)
+ => SaveAsync(source, path, encoder, default);
+
+ ///
+ /// Writes the image to the given stream using the currently loaded image format.
+ ///
+ /// The source image.
+ /// The file path to save the image to.
+ /// The encoder to save the image with.
+ /// The token to monitor for cancellation requests.
+ /// The path is null.
+ /// The encoder is null.
+ /// A representing the asynchronous operation.
+ public static async Task SaveAsync(
+ this Image source,
+ string path,
+ IImageEncoder encoder,
+ CancellationToken cancellationToken)
{
Guard.NotNull(path, nameof(path));
Guard.NotNull(encoder, nameof(encoder));
- using (Stream fs = source.GetConfiguration().FileSystem.Create(path))
- {
- await source.SaveAsync(fs, encoder).ConfigureAwait(false);
- }
+ using Stream fs = source.GetConfiguration().FileSystem.Create(path);
+ await source.SaveAsync(fs, encoder, cancellationToken).ConfigureAwait(false);
}
///
diff --git a/src/ImageSharp/ImageSharp.csproj b/src/ImageSharp/ImageSharp.csproj
index 97a2a332d..8af404525 100644
--- a/src/ImageSharp/ImageSharp.csproj
+++ b/src/ImageSharp/ImageSharp.csproj
@@ -134,6 +134,11 @@
True
PorterDuffFunctions.Generated.tt
+
+ True
+ True
+ ImageExtesions.Save.tt
+
@@ -209,6 +214,10 @@
DefaultPixelBlenders.Generated.cs
TextTemplatingFileGenerator
+
+ TextTemplatingFileGenerator
+ ImageExtesions.Save.cs
+