SixLabors / ImageSharp

:camera: A modern, cross-platform, 2D Graphics library for .NET
https://sixlabors.com/products/imagesharp/
Other
7.31k stars 846 forks source link

NullReferenceException when trying to load an animated PNG #2666

Closed TheShihan closed 5 months ago

TheShihan commented 6 months ago

Prerequisites

ImageSharp version

3.1.2

Other ImageSharp packages and versions

SixLabors.ImageSharp.Drawing 2.1.1

Environment (Operating system, version and so on)

Windows 11 23H2

.NET Framework version

.NET 7.0

Description

I am trying to load an animated PNG (that I previously created successfully using ImageSharp). Unfortunately I get a NullReferenceException when loading the stream:

var img = Image.Load(inputStream);

   at SixLabors.ImageSharp.Formats.Png.PngDecoderCore.Identify(BufferedReadStream stream, CancellationToken cancellationToken)
   at SixLabors.ImageSharp.Formats.ImageDecoderUtilities.Identify(IImageDecoderInternals decoder, Configuration configuration, Stream stream, CancellationToken cancellationToken)
   at SixLabors.ImageSharp.Formats.Png.PngDecoder.Decode(PngDecoderOptions options, Stream stream, CancellationToken cancellationToken)
   at SixLabors.ImageSharp.Formats.SpecializedImageDecoder`1.Decode(DecoderOptions options, Stream stream, CancellationToken cancellationToken)
   at SixLabors.ImageSharp.Formats.ImageDecoder.<>c__DisplayClass1_0.<Decode>b__0(Stream s)
   at SixLabors.ImageSharp.Formats.ImageDecoder.<WithSeekableStream>g__PeformActionAndResetPosition|11_0[T](Stream s, Int64 position, <>c__DisplayClass11_0`1& )
   at SixLabors.ImageSharp.Formats.ImageDecoder.WithSeekableStream[T](DecoderOptions options, Stream stream, Func`2 action)
   at SixLabors.ImageSharp.Formats.ImageDecoder.Decode(DecoderOptions options, Stream stream)
   at SixLabors.ImageSharp.Image.Decode(DecoderOptions options, Stream stream)
   at SixLabors.ImageSharp.Image.<>c__DisplayClass80_0.<Load>b__0(Stream s)
   at SixLabors.ImageSharp.Image.WithSeekableStream[T](DecoderOptions options, Stream stream, Func`2 action)
   at SixLabors.ImageSharp.Image.Load(DecoderOptions options, Stream stream)
   at SixLabors.ImageSharp.Image.Load(Stream stream)

The image loads fine for example in Chrome and the animation plays.

Steps to Reproduce

  1. Use the image provided
  2. Create a stream using (var fileStream = await file.OpenAsync(FileAccessMode.Read))
  3. Try to load it with: var img = Image.Load(inputStream);
  4. NullReferenceException occurs

Images

202402142208_qooli_gifeditor

JimBobSquarePants commented 5 months ago

Fixed with #2674