Beispiel #1
0
        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);
            }
        }