diff --git a/src/ImageSharp/Image.FromFile.cs b/src/ImageSharp/Image.FromFile.cs
index 3a4b459c5..fce0835fb 100644
--- a/src/ImageSharp/Image.FromFile.cs
+++ b/src/ImageSharp/Image.FromFile.cs
@@ -255,6 +255,7 @@ namespace SixLabors.ImageSharp
///
/// The file path to the image.
/// The decoder.
+ /// The token to monitor for cancellation requests.
/// The configuration is null.
/// The path is null.
/// The decoder is null.
@@ -262,14 +263,15 @@ namespace SixLabors.ImageSharp
/// Image format is not supported.
/// Image contains invalid content.
/// A representing the asynchronous operation.
- public static Task LoadAsync(string path, IImageDecoder decoder)
- => LoadAsync(Configuration.Default, path, decoder, default);
+ public static Task LoadAsync(string path, IImageDecoder decoder, CancellationToken cancellationToken = default)
+ => LoadAsync(Configuration.Default, path, decoder, cancellationToken);
///
/// Create a new instance of the class from the given file.
///
/// The file path to the image.
/// The decoder.
+ /// The token to monitor for cancellation requests.
/// The configuration is null.
/// The path is null.
/// The decoder is null.
@@ -278,9 +280,9 @@ namespace SixLabors.ImageSharp
/// Image contains invalid content.
/// The pixel format.
/// A representing the asynchronous operation.
- public static Task> LoadAsync(string path, IImageDecoder decoder)
+ public static Task> LoadAsync(string path, IImageDecoder decoder, CancellationToken cancellationToken = default)
where TPixel : unmanaged, IPixel
- => LoadAsync(Configuration.Default, path, decoder, default);
+ => LoadAsync(Configuration.Default, path, decoder, cancellationToken);
///
/// Create a new instance of the class from the given file.
@@ -342,6 +344,7 @@ namespace SixLabors.ImageSharp
/// Create a new instance of the class from the given file.
///
/// The file path to the image.
+ /// The token to monitor for cancellation requests.
/// The configuration is null.
/// The path is null.
/// Image format not recognised.
@@ -349,9 +352,9 @@ namespace SixLabors.ImageSharp
/// Image format is not supported.
/// The pixel format.
/// A representing the asynchronous operation.
- public static Task> LoadAsync(string path)
+ public static Task> LoadAsync(string path, CancellationToken cancellationToken = default)
where TPixel : unmanaged, IPixel
- => LoadAsync(Configuration.Default, path, default(CancellationToken));
+ => LoadAsync(Configuration.Default, path, cancellationToken);
///
/// Create a new instance of the class from the given file.
diff --git a/src/ImageSharp/Image.FromStream.cs b/src/ImageSharp/Image.FromStream.cs
index 291d6f7ca..f5e32d8ce 100644
--- a/src/ImageSharp/Image.FromStream.cs
+++ b/src/ImageSharp/Image.FromStream.cs
@@ -44,27 +44,29 @@ namespace SixLabors.ImageSharp
/// By reading the header on the provided stream this calculates the images format type.
///
/// The image stream to read the header from.
+ /// The token to monitor for cancellation requests.
/// The stream is null.
/// The stream is not readable.
/// A representing the asynchronous operation or null if none is found.
- public static Task DetectFormatAsync(Stream stream)
- => DetectFormatAsync(Configuration.Default, stream);
+ public static Task DetectFormatAsync(Stream stream, CancellationToken cancellationToken = default)
+ => DetectFormatAsync(Configuration.Default, stream, cancellationToken);
///
/// By reading the header on the provided stream this calculates the images format type.
///
/// The configuration.
/// The image stream to read the header from.
+ /// The token to monitor for cancellation requests.
/// The configuration is null.
/// The stream is null.
/// The stream is not readable.
/// A representing the asynchronous operation.
- public static Task DetectFormatAsync(Configuration configuration, Stream stream)
+ public static Task DetectFormatAsync(Configuration configuration, Stream stream, CancellationToken cancellationToken = default)
=> WithSeekableStreamAsync(
configuration,
stream,
(s, _) => InternalDetectFormatAsync(s, configuration),
- default);
+ cancellationToken);
///
/// Reads the raw image information from the specified stream without fully decoding it.
@@ -83,6 +85,7 @@ namespace SixLabors.ImageSharp
/// Reads the raw image information from the specified stream without fully decoding it.
///
/// The image stream to read the header from.
+ /// The token to monitor for cancellation requests.
/// The stream is null.
/// The stream is not readable.
/// Image contains invalid content.
@@ -90,8 +93,8 @@ namespace SixLabors.ImageSharp
/// A representing the asynchronous operation or null if
/// a suitable detector is not found.
///
- public static Task IdentifyAsync(Stream stream)
- => IdentifyAsync(Configuration.Default, stream);
+ public static Task IdentifyAsync(Stream stream, CancellationToken cancellationToken = default)
+ => IdentifyAsync(Configuration.Default, stream, cancellationToken);
///
/// Reads the raw image information from the specified stream without fully decoding it.
@@ -227,13 +230,14 @@ namespace SixLabors.ImageSharp
/// The pixel format is selected by the decoder.
///
/// The stream containing image information.
+ /// The token to monitor for cancellation requests.
/// The stream is null.
/// The stream is not readable or the image format is not supported.
/// Image format not recognised.
/// Image contains invalid content.
/// A representing the asynchronous operation.
- public static Task<(Image Image, IImageFormat Format)> LoadWithFormatAsync(Stream stream)
- => LoadWithFormatAsync(Configuration.Default, stream);
+ public static Task<(Image Image, IImageFormat Format)> LoadWithFormatAsync(Stream stream, CancellationToken cancellationToken = default)
+ => LoadWithFormatAsync(Configuration.Default, stream, cancellationToken);
///
/// Decode a new instance of the class from the given stream.
@@ -252,12 +256,14 @@ namespace SixLabors.ImageSharp
/// The pixel format is selected by the decoder.
///
/// The stream containing image information.
+ /// The token to monitor for cancellation requests.
/// The stream is null.
/// The stream is not readable or the image format is not supported.
/// Image format not recognised.
/// Image contains invalid content.
/// A representing the asynchronous operation.
- public static Task LoadAsync(Stream stream) => LoadAsync(Configuration.Default, stream);
+ public static Task LoadAsync(Stream stream, CancellationToken cancellationToken = default)
+ => LoadAsync(Configuration.Default, stream, cancellationToken);
///
/// Decode a new instance of the class from the given stream.
@@ -280,14 +286,15 @@ namespace SixLabors.ImageSharp
///
/// The stream containing image information.
/// The decoder.
+ /// The token to monitor for cancellation requests.
/// The stream is null.
/// The decoder is null.
/// The stream is not readable or the image format is not supported.
/// Image format not recognised.
/// Image contains invalid content.
/// A representing the asynchronous operation.
- public static Task LoadAsync(Stream stream, IImageDecoder decoder)
- => LoadAsync(Configuration.Default, stream, decoder);
+ public static Task LoadAsync(Stream stream, IImageDecoder decoder, CancellationToken cancellationToken = default)
+ => LoadAsync(Configuration.Default, stream, decoder, cancellationToken);
///
/// Decode a new instance of the class from the given stream.
@@ -388,15 +395,16 @@ namespace SixLabors.ImageSharp
/// Create a new instance of the class from the given stream.
///
/// The stream containing image information.
+ /// The token to monitor for cancellation requests.
/// The stream is null.
/// The stream is not readable or the image format is not supported.
/// Image format not recognised.
/// Image contains invalid content.
/// The pixel format.
/// A representing the asynchronous operation.
- public static Task> LoadAsync(Stream stream)
+ public static Task> LoadAsync(Stream stream, CancellationToken cancellationToken = default)
where TPixel : unmanaged, IPixel
- => LoadAsync(Configuration.Default, stream);
+ => LoadAsync(Configuration.Default, stream, cancellationToken);
///
/// Create a new instance of the class from the given stream.
@@ -417,15 +425,16 @@ namespace SixLabors.ImageSharp
/// Create a new instance of the class from the given stream.
///
/// The stream containing image information.
+ /// The token to monitor for cancellation requests.
/// The stream is null.
/// The stream is not readable or the image format is not supported.
/// Image format not recognised.
/// Image contains invalid content.
/// The pixel format.
/// A representing the asynchronous operation.
- public static async Task<(Image Image, IImageFormat Format)> LoadWithFormatAsync(Stream stream)
+ public static async Task<(Image Image, IImageFormat Format)> LoadWithFormatAsync(Stream stream, CancellationToken cancellationToken = default)
where TPixel : unmanaged, IPixel
- => await LoadWithFormatAsync(Configuration.Default, stream).ConfigureAwait(false);
+ => await LoadWithFormatAsync(Configuration.Default, stream, cancellationToken).ConfigureAwait(false);
///
/// Create a new instance of the class from the given stream.