|
|
@ -22,22 +22,22 @@ namespace SixLabors.ImageSharp.Formats |
|
|
Configuration configuration = image.GetConfiguration(); |
|
|
Configuration configuration = image.GetConfiguration(); |
|
|
if (stream.CanSeek) |
|
|
if (stream.CanSeek) |
|
|
{ |
|
|
{ |
|
|
await DoEncodeAsync(); |
|
|
await DoEncodeAsync(stream); |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|
using var ms = new MemoryStream(); |
|
|
using var ms = new MemoryStream(); |
|
|
await DoEncodeAsync(); |
|
|
await DoEncodeAsync(ms); |
|
|
ms.Position = 0; |
|
|
ms.Position = 0; |
|
|
await ms.CopyToAsync(stream, configuration.StreamProcessingBufferSize, cancellationToken) |
|
|
await ms.CopyToAsync(stream, configuration.StreamProcessingBufferSize, cancellationToken) |
|
|
.ConfigureAwait(false); |
|
|
.ConfigureAwait(false); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
Task DoEncodeAsync() |
|
|
Task DoEncodeAsync(Stream innerStream) |
|
|
{ |
|
|
{ |
|
|
try |
|
|
try |
|
|
{ |
|
|
{ |
|
|
encoder.Encode(image, stream, cancellationToken); |
|
|
encoder.Encode(image, innerStream, cancellationToken); |
|
|
return Task.CompletedTask; |
|
|
return Task.CompletedTask; |
|
|
} |
|
|
} |
|
|
catch (OperationCanceledException) |
|
|
catch (OperationCanceledException) |
|
|
|