@@ -423,6 +423,55 @@ public void Identify_AnimatedPng_ReadsFrameCountCorrectly()
423423 Assert . Equal ( 50 , imageInfo . FrameMetadataCollection . Count ) ;
424424 }
425425
426+ [ Theory ]
427+ [ InlineData ( 1 ) ]
428+ [ InlineData ( 2 ) ]
429+ [ InlineData ( 5 ) ]
430+ [ InlineData ( 10 ) ]
431+ [ InlineData ( 100 ) ]
432+ public void Identify_AnimatedPng_FrameCount_MatchesDecode ( int frameCount )
433+ {
434+ using Image < Rgba32 > image = new ( 10 , 10 , Color . Red . ToPixel < Rgba32 > ( ) ) ;
435+ for ( int i = 1 ; i < frameCount ; i ++ )
436+ {
437+ using ImageFrame < Rgba32 > frame = new ( Configuration . Default , 10 , 10 ) ;
438+ image . Frames . AddFrame ( frame ) ;
439+ }
440+
441+ using MemoryStream stream = new ( ) ;
442+ image . Save ( stream , new PngEncoder ( ) ) ;
443+ stream . Position = 0 ;
444+
445+ ImageInfo imageInfo = Image . Identify ( stream ) ;
446+
447+ Assert . NotNull ( imageInfo ) ;
448+ Assert . Equal ( frameCount , imageInfo . FrameMetadataCollection . Count ) ;
449+ }
450+
451+ [ Theory ]
452+ [ InlineData ( 1 ) ]
453+ [ InlineData ( 2 ) ]
454+ [ InlineData ( 5 ) ]
455+ [ InlineData ( 10 ) ]
456+ [ InlineData ( 100 ) ]
457+ public void Decode_AnimatedPng_FrameCount ( int frameCount )
458+ {
459+ using Image < Rgba32 > image = new ( 10 , 10 , Color . Red . ToPixel < Rgba32 > ( ) ) ;
460+ for ( int i = 1 ; i < frameCount ; i ++ )
461+ {
462+ using ImageFrame < Rgba32 > frame = new ( Configuration . Default , 10 , 10 ) ;
463+ image . Frames . AddFrame ( frame ) ;
464+ }
465+
466+ using MemoryStream stream = new ( ) ;
467+ image . Save ( stream , new PngEncoder ( ) ) ;
468+ stream . Position = 0 ;
469+
470+ using Image < Rgba32 > decoded = Image . Load < Rgba32 > ( stream ) ;
471+
472+ Assert . Equal ( frameCount , decoded . Frames . Count ) ;
473+ }
474+
426475 [ Theory ]
427476 [ WithFile ( TestImages . Png . Bad . MissingDataChunk , PixelTypes . Rgba32 ) ]
428477 public void Decode_MissingDataChunk_ThrowsException < TPixel > ( TestImageProvider < TPixel > provider )
0 commit comments