/// <inheritdoc/> public IImageInfo Identify(Configuration configuration, Stream stream) { Guard.NotNull(stream, nameof(stream)); using var decoder = new JpegDecoderCore(configuration, this); return(decoder.Identify(configuration, stream)); }
/// <inheritdoc/> public Task <Image <TPixel> > DecodeAsync <TPixel>(Configuration configuration, Stream stream, CancellationToken cancellationToken) where TPixel : unmanaged, IPixel <TPixel> { Guard.NotNull(stream, nameof(stream)); using var decoder = new JpegDecoderCore(configuration, this); return(decoder.DecodeAsync <TPixel>(configuration, stream, cancellationToken)); }
/// <inheritdoc/> public Image <TPixel> Decode <TPixel>(Configuration configuration, Stream stream) where TPixel : unmanaged, IPixel <TPixel> { Guard.NotNull(stream, nameof(stream)); using var decoder = new JpegDecoderCore(configuration, this); return(decoder.Decode <TPixel>(configuration, stream)); }
/// <inheritdoc/> public Task <IImageInfo> IdentifyAsync(Configuration configuration, Stream stream) { Guard.NotNull(stream, nameof(stream)); using var decoder = new JpegDecoderCore(configuration, this); using var bufferedStream = new BufferedReadStream(configuration, stream); return(decoder.IdentifyAsync(bufferedStream)); }
/// <inheritdoc/> public async Task <IImageInfo> IdentifyAsync(Configuration configuration, Stream stream) { Guard.NotNull(stream, nameof(stream)); using (var decoder = new JpegDecoderCore(configuration, this)) { return(await decoder.IdentifyAsync(stream).ConfigureAwait(false)); } }
/// <inheritdoc/> public Image <TPixel> Decode <TPixel>(Configuration configuration, Stream stream) where TPixel : struct, IPixel <TPixel> { Guard.NotNull(stream, nameof(stream)); using (var decoder = new JpegDecoderCore(configuration, this)) { return(decoder.Decode <TPixel>(stream)); } }
/// <inheritdoc/> public async Task <IImageInfo> IdentifyAsync(Configuration configuration, Stream stream, CancellationToken cancellationToken) { Guard.NotNull(stream, nameof(stream)); // The introduction of a local variable that refers to an object the implements // IDisposable means you must use async/await, where the compiler generates the // state machine and a continuation. using (var decoder = new JpegDecoderCore(configuration, this)) { return(await decoder.IdentifyAsync(configuration, stream, cancellationToken) .ConfigureAwait(false)); } }
/// <inheritdoc/> public Image <TPixel> Decode <TPixel>(Configuration configuration, Stream stream) where TPixel : struct, IPixel <TPixel> { Guard.NotNull(stream, nameof(stream)); using var decoder = new JpegDecoderCore(configuration, this); try { return(decoder.Decode <TPixel>(stream)); } catch (InvalidMemoryOperationException ex) { (int w, int h) = (decoder.ImageWidth, decoder.ImageHeight); // TODO: use InvalidImageContentException here, if we decide to define it // https://github.com/SixLabors/ImageSharp/issues/1110 throw new ImageFormatException($"Can not decode image. Failed to allocate buffers for possibly degenerate dimensions: {w}x{h}.", ex); } }
/// <inheritdoc/> public Image <TPixel> Decode <TPixel>(Configuration configuration, Stream stream) where TPixel : unmanaged, IPixel <TPixel> { Guard.NotNull(stream, nameof(stream)); using var decoder = new JpegDecoderCore(configuration, this); try { return(decoder.Decode <TPixel>(stream)); } catch (InvalidMemoryOperationException ex) { (int w, int h) = (decoder.ImageWidth, decoder.ImageHeight); JpegThrowHelper.ThrowInvalidImageContentException($"Can not decode image. Failed to allocate buffers for possibly degenerate dimensions: {w}x{h}.", ex); // Not reachable, as the previous statement will throw a exception. return(null); } }