using SkiaSharp; namespace Sandbox; public partial class Bitmap { /// /// Loads a bitmap from the specified byte array. /// /// The byte array containing the image data. /// A new instance. public static Bitmap CreateFromBytes( byte[] data ) { // load via skia { using var stream = new SKMemoryStream( data ); using var codec = SKCodec.Create( stream ); if ( codec is not null ) { var originalInfo = codec.Info; var info = new SKImageInfo( codec.Info.Width, codec.Info.Height, SKColorType.Rgba8888, SKAlphaType.Unpremul ); var skBitmap = SKBitmap.Decode( codec, info ); if ( skBitmap is not null ) { return new Bitmap( skBitmap ); } } } if ( CreateFromTgaBytes( data ) is { } tga ) return tga; if ( CreateFromPsdBytes( data ) is { } psd ) return psd; if ( CreateFromTifBytes( data ) is { } tif ) return tif; if ( CreateFromIesBytes( data ) is { } ies ) return ies; // don't know how to load this return null; } }