private void ProcessChunk(byte[] chunkBytes) { var chunkTypeString = PngChunk.GetChunkTypeString(chunkBytes.Skip(4).Take(4).ToArray()); if (!(chunkTypeString == "IHDR")) { if (!(chunkTypeString == "PLTE")) { if (!(chunkTypeString == "tRNS")) { if (!(chunkTypeString == "IDAT")) { return; } var dataChunk = new DataChunk(); dataChunk.Decode(chunkBytes); dataChunks.Add(dataChunk); } else { var transparencyChunk = new TransparencyChunk(); transparencyChunk.Decode(chunkBytes); palette.AddAlphaToColors(transparencyChunk.PaletteTransparencies); } } else { var paletteChunk = new PaletteChunk(); paletteChunk.Decode(chunkBytes); palette = paletteChunk.Palette; chunks.Add(paletteChunk); } } else { var headerChunk = new HeaderChunk(); headerChunk.Decode(chunkBytes); width = (int)headerChunk.Width; height = (int)headerChunk.Height; bitsPerSample = headerChunk.BitDepth; colorType = headerChunk.ColorType; chunks.Add(headerChunk); } }