Пример #1
0
        public byte[] WritePixels(BinaryPSDWriter writer, Compression compression, byte[] data)
        {
            switch (compression)
            {
            case Compression.None:
                writer.Write(data);
                return(null);

            case Compression.Rle:
                int[] rleRowLenghs = new int[this._height];

                Endogine.Serialization.RleCodec codec = new Endogine.Serialization.RleCodec();
                for (int row = 0; row < this._height; row++)
                {
                    rleRowLenghs[row] = Endogine.Serialization.RleCodec.EncodeChunk(writer.BaseStream, data, (long)row * this._width, (long)this._width);
                }

                System.IO.MemoryStream memStream = new System.IO.MemoryStream();
                BinaryPSDWriter        memWriter = new BinaryPSDWriter(memStream);
                for (int i = 0; i < rleRowLenghs.Length; i++)
                {
                    memWriter.Write((short)rleRowLenghs[i]);
                }

                return(memStream.ToArray());

            default:
                throw new Exception("Compression not implemented: " + compression.ToString());
            }
            return(null);
        }
Пример #2
0
        public byte[] WritePixels(BinaryPSDWriter writer, Compression compression, byte[] data)
        {
            switch (compression)
            {
                case Compression.None:
                    writer.Write(data);
                    return null;

                case Compression.Rle:
                    int[] rleRowLenghs = new int[this._height];

                    Endogine.Serialization.RleCodec codec = new Endogine.Serialization.RleCodec();
                    for (int row = 0; row < this._height; row++)
                        rleRowLenghs[row] = Endogine.Serialization.RleCodec.EncodeChunk(writer.BaseStream, data, (long)row * this._width, (long)this._width);

                    System.IO.MemoryStream memStream = new System.IO.MemoryStream();
                    BinaryPSDWriter memWriter = new BinaryPSDWriter(memStream);
                    for (int i = 0; i < rleRowLenghs.Length; i++)
                        memWriter.Write((short)rleRowLenghs[i]);

                    return memStream.ToArray();

                default:
                    throw new Exception("Compression not implemented: " + compression.ToString());
            }
            return null;
        }