示例#1
0
        private void lZZSToDankToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            if (openFileDialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            using (BinaryReader reader = new BinaryReader(new FileStream(openFileDialog.FileName, FileMode.Open)))
            {
                byte[] buffer = new byte[reader.BaseStream.Length];
                reader.Read(buffer, 0, buffer.Length);

                byte[] output = YuGiLZSS.Decompress(buffer);

                using (BinaryWriter writer = new BinaryWriter(new FileStream(openFileDialog.FileName + ".OUT", FileMode.Create)))
                {
                    writer.Write(output);
                }
            }
        }
示例#2
0
        public Bitmap Decompress()
        {
            byte[] buffer;
            using (BinaryReader reader = new BinaryReader(new FileStream(Filename, FileMode.Open)))
            {
                buffer = reader.ReadBytes((int)reader.BaseStream.Length - 1);
            }

            byte[] headerBytes = new byte[24];
            Array.Copy(buffer, 0, headerBytes, 0, 24);

            YGAHeader header = YGAHeader.GetHeader(headerBytes);

            byte[] data = new byte[buffer.Length - 23];
            Array.Copy(buffer, 24, data, 0, buffer.Length - 24);

            byte[] bitmapBytes;
            if (header.Mode == 1)
            {
                bitmapBytes = YuGiLZSS.Decompress(data, header.UncompressedSize);
            }
            else
            {
                bitmapBytes = data;
            }

            Bitmap bitmap = new Bitmap(header.Width, header.Height);

            for (int i = 0; i < header.Height; i++)
            {
                for (int j = 0; j < header.Width; j++)
                {
                    int   index = (i * header.Width * 4) + j * 4;
                    Color color = Color.FromArgb(bitmapBytes[index + 3], bitmapBytes[index + 2], bitmapBytes[index + 1], bitmapBytes[index]);
                    bitmap.SetPixel(j, i, color);
                }
            }
            return(bitmap);
        }