public void WriteToStream(Stream s, bool standardonly = false, bool critonly = false)
{
s.Write(MAGIC_NUMBER, 0, MAGIC_NUMBER.Length);
PNGChunk? eof = null;
foreach (PNGChunk chunk in Chunks)
{
if ((critonly && !chunk.Critical) || (standardonly && !chunk.Standard)) continue;
if (chunk.Name == "_EOF")
{
eof = chunk;
continue;
}
byte[] length = BitConverter.GetBytes(chunk.Data.Length);
SwapEndianness(ref length);
WriteData(s, length);
WriteData(s, Encoding.ASCII.GetBytes(chunk.Name));
WriteData(s, chunk.Data);
byte[] crc = BitConverter.GetBytes(chunk.CRC);
SwapEndianness(ref crc);
WriteData(s, crc);
}
if (eof.HasValue && eof != null)
WriteData(s, eof.Value.Data);
}