public void EncodeTest() { MockEncoder encoder = new MockEncoder(); LZW lzw = new LZW(encoder); lzw.Encode((42)); lzw.Encode((43)); lzw.Encode((42)); lzw.Encode((43)); lzw.Encode((44)); Assert.AreEqual(encoder.values[0], 42); Assert.AreEqual(encoder.values[1], 43); Assert.AreEqual(encoder.values[2], 256); }
private void encodeResult(object sender, RoutedEventArgs e) { text = messageTextBox.Text.ToCharArray(0, messageTextBox.Text.Length); dictionary = LZW.InitializeDictionary(text); alphabet = new Dictionary <string, int>(dictionary); encodeList = LZW.Encode(dictionary, text); result.Text = String.Join(", ", encodeList); CreateDictionary(dictionary); }
public void EncodeDecodeTest() { MockEncoder encoder = new MockEncoder(); LZW lzw = new LZW(encoder); foreach (byte character in "Lorem ipsum dolor sit amet consectetur adepiscig nullam") { lzw.Encode(character); } lzw.EncoderFinalize(); LZW lzwDecoder = new LZW(encoder); String output = ""; foreach (byte character in "Lorem ipsum dolor sit amet consectetur adepiscig nullam") { byte actual = lzwDecoder.Decode(); output += (char)actual; Assert.AreEqual(character, actual); } }
public byte[] GetBytes() { using (MemoryStream ms = new MemoryStream()) using (BinaryWriter br = new BinaryWriter(ms)) { if (HasPalette16) { br.Write((ushort)0x3045); throw new NotImplementedException(); } if (HasPalette256) { br.Write((ushort)0x304D); br.Write(GetColourPaletteBytes().ToArray()); } if (HasPicture256) { br.Write((ushort)0x3058); byte[] encoded = RLE.Encode(_picture256.ToByteArray()); encoded = LZW.Encode(encoded); br.Write((ushort)(encoded.Length + 5)); br.Write((ushort)_picture256.Width); br.Write((ushort)_picture256.Height); br.Write((byte)11); br.Write(encoded); } if (HasPalette16) { br.Write((ushort)0x3158); throw new NotImplementedException(); } return(ms.ToArray()); } }
public byte[] GetBytes() { using (MemoryStream output = new MemoryStream()) using (BinaryWriter writer = new BinaryWriter(output)) { // GIF header writer.Write("GIF89a".ToCharArray()); // Width x Height writer.Write((ushort)_pixels.Width); writer.Write((ushort)_pixels.Height); // GCT Descriptor writer.Write((byte)0xF7); // Background colour #0 writer.Write((byte)0x00); //Default pixel aspect ratio writer.Write((byte)0x00); // Write colour palette for (int i = 0; i < 256; i++) { byte r = 0, g = 0, b = 0; if (_palette.Length > i) { r = _palette[i].R; g = _palette[i].G; b = _palette[i].B; } writer.Write(new byte[] { r, g, b }); } // Image Descriptor writer.Write((byte)0x2C); // NW Corner writer.Write((ushort)0); writer.Write((ushort)0); // Width x Height writer.Write((ushort)_pixels.Width); writer.Write((ushort)_pixels.Height); // No local colour table writer.Write((byte)0x00); byte[] encoded = LZW.Encode(_pixels.ToByteArray(), true, false, 12); // Code length writer.Write((byte)0x08); foreach (byte[] byteBlock in ByteBlock(encoded)) { writer.Write((byte)byteBlock.Length); writer.Write(byteBlock); } writer.Write((byte)0x00); // End of file writer.Write((byte)0x3B); return(output.ToArray()); } }