protected IBinaryStream OpenAsBitmap(IBinaryStream input) { var header = new byte[2] { (byte)'B', (byte)'M' }; Stream stream = new StreamRegion(input.AsStream, 2, true); stream = new PrefixStream(header, stream); return(new BinaryStream(stream, input.Name)); }
public override ImageData Read(IBinaryStream file, ImageMetaData info) { var meta = (MngMetaData)info; var body = new StreamRegion(file.AsStream, meta.PngOffset, true); using (var png = new PrefixStream(PngFormat.HeaderBytes, body)) { var decoder = new PngBitmapDecoder(png, BitmapCreateOptions.None, BitmapCacheOption.OnLoad); var frame = decoder.Frames[0]; frame.Freeze(); return(new ImageData(frame, info)); } }
public MngFrameDecoder(IBinaryStream input) { var png = new PrefixStream(PngFormat.HeaderBytes, input.AsStream); m_input = new BinaryStream(png, input.Name); try { Info = ImageFormat.Png.ReadMetaData(m_input); if (null == Info) { throw new InvalidFormatException(); } } catch { m_input.Dispose(); throw; } }