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); } } }
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); }