@@ -6,6 +6,17 @@ sealed class PageRenderer(RenderContext context) :
66{
77 static readonly SKTypeface aptosTypeface = SKTypeface . FromFamilyName ( "Aptos" , SKFontStyle . Normal ) ;
88
9+ /// <summary>
10+ /// Safely decodes image data, returning null for unsupported formats
11+ /// instead of throwing when <see cref="SKCodec"/> cannot handle the data.
12+ /// </summary>
13+ static SKBitmap ? DecodeBitmap ( byte [ ] data )
14+ {
15+ using var skData = SKData . CreateCopy ( data ) ;
16+ using var codec = SKCodec . Create ( skData ) ;
17+ return codec != null ? SKBitmap . Decode ( codec ) : null ;
18+ }
19+
920
1021 readonly TextRenderer textRenderer = new ( context ) ;
1122
@@ -496,7 +507,7 @@ void RenderImage(ImageElement image)
496507 else
497508 {
498509 // Regular bitmap image
499- using var skImage = SKBitmap . Decode ( image . ImageData ) ;
510+ using var skImage = DecodeBitmap ( image . ImageData ) ;
500511 if ( skImage != null )
501512 {
502513 currentCanvas . DrawBitmap ( skImage , destRect ) ;
@@ -1662,7 +1673,7 @@ void RenderImageInCell(ImageElement image, float x, float maxWidth)
16621673 }
16631674 else
16641675 {
1665- using var skImage = SKBitmap . Decode ( image . ImageData ) ;
1676+ using var skImage = DecodeBitmap ( image . ImageData ) ;
16661677 if ( skImage != null )
16671678 {
16681679 currentCanvas . DrawBitmap ( skImage , destRect ) ;
@@ -2440,7 +2451,7 @@ void RenderBackgroundShape(FloatingShapeElement shape)
24402451 // Check for image fill first
24412452 if ( shape . ImageData != null )
24422453 {
2443- using var bitmap = SKBitmap . Decode ( shape . ImageData ) ;
2454+ using var bitmap = DecodeBitmap ( shape . ImageData ) ;
24442455 if ( bitmap != null )
24452456 {
24462457 var destRect = new SKRect ( pixelX , pixelY , pixelX + pixelWidth , pixelY + pixelHeight ) ;
@@ -2520,7 +2531,7 @@ void RenderFloatingImage(FloatingImageElement image)
25202531 }
25212532 else
25222533 {
2523- using var skImage = SKBitmap . Decode ( image . ImageData ) ;
2534+ using var skImage = DecodeBitmap ( image . ImageData ) ;
25242535 if ( skImage != null )
25252536 {
25262537 currentCanvas . DrawBitmap ( skImage , destRect ) ;
0 commit comments