private static void DumpHuffmanTable(DefineHuffmanTable huffmanTable) { Console.WriteLine("HuffmanTable {0}, {1}", huffmanTable.Length, huffmanTable.Tables.Count); foreach (var value in huffmanTable.Tables.Values) { Console.WriteLine(" Table {0}, {1}", value.Index, value.Dictionary.Count); } }
public void Count() { using (var memory = new MemoryStream(Data)) using (var reader = new BinaryReader(memory)) { var huffmanTable = new DefineHuffmanTable(reader); Assert.AreEqual(2, huffmanTable.Tables.Count); } }
public void Mark() { using (var memory = new MemoryStream(Data)) using (var reader = new BinaryReader(memory)) { var huffmanTable = new DefineHuffmanTable(reader); Assert.AreEqual(0xFF, huffmanTable.Mark); } }
public void DataB2() { using (var memory = new MemoryStream(Data)) using (var reader = new BinaryReader(memory)) { var huffmanTable = new DefineHuffmanTable(reader); var expected = new byte[] { 0x06, 0x04, 0x08, 0x05, 0x07, 0x03, 0x09, 0x00, 0x0A, 0x02, 0x01, 0x0C, 0x0B, 0x0D, 0x0E }; CollectionAssert.AreEqual(expected, huffmanTable.Tables.Skip(1).Single().Value.Data2); } }
public void DataA1() { using (var memory = new MemoryStream(Data)) using (var reader = new BinaryReader(memory)) { var huffmanTable = new DefineHuffmanTable(reader); var expected = new byte[] { 0x00, 0x01, 0x04, 0x02, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; CollectionAssert.AreEqual(expected, huffmanTable.Tables.First().Value.Data1); } }
public void BadTag() { var badData = new byte[] { 0xFF, 0x00 }; using (var memory = new MemoryStream(badData)) using (var reader = new BinaryReader(memory)) { var huffmanTable = new DefineHuffmanTable(reader); } }
public void ShortLengthA() { var badData = new byte[] { 0xFF, 0xC4, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; using (var memory = new MemoryStream(badData)) using (var reader = new BinaryReader(memory)) { var huffmanTable = new DefineHuffmanTable(reader); } }
/// <summary> /// Writes to the specified stream. /// </summary> /// <param name="stream">The stream.</param> /// <param name="image">The image.</param> /// <returns> /// True if it writes successfully, false otherwise. /// </returns> public override bool Write(BinaryWriter stream, Image image) { new StartOfImage().Write(stream); var QuantizationTableSegment = new DefineQuantizationTable(90); QuantizationTableSegment.Write(stream); new StartOfFrame(image).Write(stream); var HuffmanTableSegment = new DefineHuffmanTable(null); HuffmanTableSegment.Write(stream); new StartOfScan(image, HuffmanTableSegment, QuantizationTableSegment).Write(stream); new EndOfImage(null).Write(stream); return(true); }
public void LongLengthB() { var badData = new byte[] { 0xFF, 0xC4, 0x00, 0x38, 0x00, 0x12, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x09, 0x07 }; using (var memory = new MemoryStream(badData)) using (var reader = new BinaryReader(memory)) { var huffmanTable = new DefineHuffmanTable(reader); } }
public void DumpHuffmanTable() { const string directory = @"..\..\..\Samples\"; const string fileName2 = directory + "huff_simple0.jpg"; using (var fileStream = File.Open(fileName2, FileMode.Open, FileAccess.Read)) using (var binaryReader = new BinaryReader(fileStream)) { binaryReader.BaseStream.Seek(0x000000D0u, SeekOrigin.Begin); var huffmanTable = new DefineHuffmanTable(binaryReader); Assert.AreEqual(0xFF, huffmanTable.Mark); Assert.AreEqual(0xC4, huffmanTable.Tag); Console.WriteLine(huffmanTable); } }