コード例 #1
0
 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);
     }
 }
コード例 #2
0
 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);
         }
 }
コード例 #3
0
 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);
         }
 }
コード例 #4
0
 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);
         }
 }
コード例 #5
0
 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);
         }
 }
コード例 #6
0
        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);
                }
        }
コード例 #7
0
        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);
                }
        }
コード例 #8
0
        /// <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);
        }
コード例 #9
0
        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);
                }
        }
コード例 #10
0
        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);
                }
        }