private static void assertCorrectImage2result(String path, ExpandedProductParsedResult expected)
        {
            RSSExpandedReader rssExpandedReader = new RSSExpandedReader();

            if (!File.Exists(path))
            {
                // Support running from project root too
                path = Path.Combine("..\\..\\..\\Source", path);
            }

#if !SILVERLIGHT
            var image = new Bitmap(Image.FromFile(path));
#else
            var image = new WriteableBitmap(0, 0);
            image.SetSource(File.OpenRead(path));
#endif
            BinaryBitmap binaryMap = new BinaryBitmap(new GlobalHistogramBinarizer(new BitmapLuminanceSource(image)));
            int          rowNumber = binaryMap.Height / 2;
            BitArray     row       = binaryMap.getBlackRow(rowNumber, null);

            Result theResult = rssExpandedReader.decodeRow(rowNumber, row, null);
            Assert.IsNotNull(theResult);

            Assert.AreEqual(BarcodeFormat.RSS_EXPANDED, theResult.BarcodeFormat);

            ParsedResult result = ResultParser.parseResult(theResult);

            Assert.AreEqual(expected, result);
        }
        public void testDecodeDataCharacter()
        {
            RSSExpandedReader rssExpandedReader = new RSSExpandedReader();

            String path = "test/data/blackbox/rssexpanded-1/3.png";

            if (!File.Exists(path))
            {
                // Support running from project root too
                path = Path.Combine("..\\..\\..\\Source", path);
            }

#if !SILVERLIGHT
            var image = new Bitmap(Image.FromFile(path));
#else
            var image = new WriteableBitmap(0, 0);
            image.SetSource(File.OpenRead(path));
#endif
            BinaryBitmap binaryMap = new BinaryBitmap(new GlobalHistogramBinarizer(new BitmapLuminanceSource(image)));
            BitArray     row       = binaryMap.getBlackRow(binaryMap.Height / 2, null);

            int[] startEnd = { 145, 243 }; //image pixels where the A1 pattern starts (at 124) and ends (at 214)
            int   value    = 0;            // A
#if !SILVERLIGHT
            FinderPattern finderPatternA1 = new FinderPattern(value, startEnd, startEnd[0], startEnd[1], image.Height / 2);
#else
            FinderPattern finderPatternA1 = new FinderPattern(value, startEnd, startEnd[0], startEnd[1], image.PixelHeight / 2);
#endif
            //{1, 8, 4, 1, 1};
            DataCharacter dataCharacter = rssExpandedReader.decodeDataCharacter(row, finderPatternA1, true, false);

            Assert.AreEqual(19, dataCharacter.Value);
            Assert.AreEqual(1007, dataCharacter.ChecksumPortion);
        }
        public void testRetrieveNextPairPatterns()
        {
            RSSExpandedReader rssExpandedReader = new RSSExpandedReader();

            String path = "test/data/blackbox/rssexpanded-1/3.png";

            if (!File.Exists(path))
            {
                // Support running from project root too
                path = Path.Combine("..\\..\\..\\Source", path);
            }

#if !SILVERLIGHT
            var image = new Bitmap(Image.FromFile(path));
#else
            var image = new WriteableBitmap(0, 0);
            image.SetSource(File.OpenRead(path));
#endif
            BinaryBitmap        binaryMap     = new BinaryBitmap(new GlobalHistogramBinarizer(new BitmapLuminanceSource(image)));
            int                 rowNumber     = binaryMap.Height / 2;
            BitArray            row           = binaryMap.getBlackRow(rowNumber, null);
            List <ExpandedPair> previousPairs = new List <ExpandedPair>();

            ExpandedPair pair1 = rssExpandedReader.retrieveNextPair(row, previousPairs, rowNumber);
            previousPairs.Add(pair1);
            FinderPattern finderPattern = pair1.FinderPattern;
            Assert.IsNotNull(finderPattern);
            Assert.AreEqual(0, finderPattern.Value);

            ExpandedPair pair2 = rssExpandedReader.retrieveNextPair(row, previousPairs, rowNumber);
            previousPairs.Add(pair2);
            finderPattern = pair2.FinderPattern;
            Assert.IsNotNull(finderPattern);
            Assert.AreEqual(0, finderPattern.Value);
        }
예제 #4
0
        private static void assertCorrectImage2binary(String path, String expected)
        {
            RSSExpandedReader rssExpandedReader = new RSSExpandedReader();

            if (!File.Exists(path))
            {
                // Support running from project root too
                path = Path.Combine("..\\..\\..\\Source", path);
            }

#if !SILVERLIGHT
            var image = new Bitmap(Image.FromFile(path));
#else
            var image = new WriteableBitmap(0, 0);
            image.SetSource(File.OpenRead(path));
#endif
            BinaryBitmap binaryMap = new BinaryBitmap(new GlobalHistogramBinarizer(new BitmapLuminanceSource(image)));
            int          rowNumber = binaryMap.Height / 2;
            BitArray     row       = binaryMap.getBlackRow(rowNumber, null);

            Assert.IsTrue(rssExpandedReader.decodeRow2pairs(rowNumber, row));

            BitArray binary = BitArrayBuilder.buildBitArray(rssExpandedReader.Pairs);
            Assert.AreEqual(expected, binary.ToString());
        }
        public void testDecodingRowByRow()
        {
            RSSExpandedReader rssExpandedReader = new RSSExpandedReader();

            BinaryBitmap binaryMap = TestCaseUtil.getBinaryBitmap("test/data/blackbox/rssexpandedstacked-2/1000.png");

            int      firstRowNumber = binaryMap.Height / 3;
            BitArray firstRow       = binaryMap.getBlackRow(firstRowNumber, null);

            Assert.IsFalse(rssExpandedReader.decodeRow2pairs(firstRowNumber, firstRow));

            Assert.AreEqual(1, rssExpandedReader.Rows.Count);
            ExpandedRow firstExpandedRow = rssExpandedReader.Rows[0];

            Assert.AreEqual(firstRowNumber, firstExpandedRow.RowNumber);

            Assert.AreEqual(2, firstExpandedRow.Pairs.Count);

            firstExpandedRow.Pairs[1].FinderPattern.StartEnd[1] = 0;

            int      secondRowNumber = 2 * binaryMap.Height / 3;
            BitArray secondRow       = binaryMap.getBlackRow(secondRowNumber, null);

            secondRow.reverse();

            Assert.IsTrue(rssExpandedReader.decodeRow2pairs(secondRowNumber, secondRow));
            var totalPairs = rssExpandedReader.Pairs;

            Result result = RSSExpandedReader.constructResult(totalPairs);

            Assert.AreEqual("(01)98898765432106(3202)012345(15)991231", result.Text);
        }
      public void testDecodingRowByRow()
      {
         var rssExpandedReader = new RSSExpandedReader();

         var binaryMap = TestCaseUtil.getBinaryBitmap("test/data/blackbox/rssexpandedstacked-2/1000.png");

         var firstRowNumber = binaryMap.Height / 3;
         var firstRow = binaryMap.getBlackRow(firstRowNumber, null);
         Assert.IsFalse(rssExpandedReader.decodeRow2pairs(firstRowNumber, firstRow));

         Assert.AreEqual(1, rssExpandedReader.Rows.Count);
         var firstExpandedRow = rssExpandedReader.Rows[0];
         Assert.AreEqual(firstRowNumber, firstExpandedRow.RowNumber);

         Assert.AreEqual(2, firstExpandedRow.Pairs.Count);

         firstExpandedRow.Pairs[1].FinderPattern.StartEnd[1] = 0;

         var secondRowNumber = 2 * binaryMap.Height / 3;
         var secondRow = binaryMap.getBlackRow(secondRowNumber, null);
         secondRow.reverse();

         Assert.IsTrue(rssExpandedReader.decodeRow2pairs(secondRowNumber, secondRow));
         var totalPairs = rssExpandedReader.Pairs;

         var result = RSSExpandedReader.constructResult(totalPairs);
         Assert.AreEqual("(01)98898765432106(3202)012345(15)991231", result.Text);
      }
      private static void assertCorrectImage2result(String path, ExpandedProductParsedResult expected)
      {
         RSSExpandedReader rssExpandedReader = new RSSExpandedReader();

         if (!File.Exists(path))
         {
            // Support running from project root too
            path = Path.Combine("..\\..\\..\\Source", path);
         }

#if !SILVERLIGHT
         var image = new Bitmap(Image.FromFile(path));
#else
         var image = new WriteableBitmap(0, 0);
         image.SetSource(File.OpenRead(path));
#endif
         BinaryBitmap binaryMap = new BinaryBitmap(new GlobalHistogramBinarizer(new BitmapLuminanceSource(image)));
         int rowNumber = binaryMap.Height / 2;
         BitArray row = binaryMap.getBlackRow(rowNumber, null);

         Result theResult = rssExpandedReader.decodeRow(rowNumber, row, null);
         Assert.IsNotNull(theResult);

         Assert.AreEqual(BarcodeFormat.RSS_EXPANDED, theResult.BarcodeFormat);

         ParsedResult result = ResultParser.parseResult(theResult);

         Assert.AreEqual(expected, result);
      }
        public void testRetrieveNextPairPatterns()
        {
            var rssExpandedReader = new RSSExpandedReader();

            var image         = TestCaseUtil.readImage("test/data/blackbox/rssexpanded-1", "3.png");
            var binaryMap     = new BinaryBitmap(new GlobalHistogramBinarizer(new BitmapLuminanceSource(image)));
            var rowNumber     = binaryMap.Height / 2;
            var row           = binaryMap.getBlackRow(rowNumber, null);
            var previousPairs = new List <ExpandedPair>();

            var pair1 = rssExpandedReader.retrieveNextPair(row, previousPairs, rowNumber);

            previousPairs.Add(pair1);
            var finderPattern = pair1.FinderPattern;

            Assert.IsNotNull(finderPattern);
            Assert.AreEqual(0, finderPattern.Value);

            var pair2 = rssExpandedReader.retrieveNextPair(row, previousPairs, rowNumber);

            previousPairs.Add(pair2);
            finderPattern = pair2.FinderPattern;
            Assert.IsNotNull(finderPattern);
            Assert.AreEqual(0, finderPattern.Value);
        }
      public void testCompleteDecode()
      {
         var rssExpandedReader = new RSSExpandedReader();

         var binaryMap = TestCaseUtil.getBinaryBitmap("test/data/blackbox/rssexpandedstacked-2/1000.png");

         var result = rssExpandedReader.decode(binaryMap);
         Assert.AreEqual("(01)98898765432106(3202)012345(15)991231", result.Text);
      }
        public void testCompleteDecode()
        {
            RSSExpandedReader rssExpandedReader = new RSSExpandedReader();

            BinaryBitmap binaryMap = TestCaseUtil.getBinaryBitmap("test/data/blackbox/rssexpandedstacked-2/1000.png");

            Result result = rssExpandedReader.decode(binaryMap);

            Assert.AreEqual("(01)98898765432106(3202)012345(15)991231", result.Text);
        }
        private static void assertCorrectImage2binary(String imageFileName, String expected)
        {
            var rssExpandedReader = new RSSExpandedReader();

            var binaryMap = TestCaseUtil.getBinaryBitmap("test/data/blackbox/rssexpanded-1", imageFileName);
            var rowNumber = binaryMap.Height / 2;
            var row       = binaryMap.getBlackRow(rowNumber, null);

            Assert.IsTrue(rssExpandedReader.decodeRow2pairs(rowNumber, row));

            var binary = BitArrayBuilder.buildBitArray(rssExpandedReader.Pairs);

            Assert.AreEqual(expected, binary.ToString());
        }
        private static void assertCorrectImage2string(String imageFileName, String expected)
        {
            var rssExpandedReader = new RSSExpandedReader();

            var binaryMap = TestCaseUtil.getBinaryBitmap("test/data/blackbox/rssexpanded-1", imageFileName);
            var rowNumber = binaryMap.Height / 2;
            var row       = binaryMap.getBlackRow(rowNumber, null);

            var result = rssExpandedReader.decodeRow(rowNumber, row, null);

            Assert.IsNotNull(result);

            Assert.AreEqual(BarcodeFormat.RSS_EXPANDED, result.BarcodeFormat);
            Assert.AreEqual(expected, result.Text);
        }
        public void testDecodeCheckCharacter()
        {
            var rssExpandedReader = new RSSExpandedReader();

            var image     = TestCaseUtil.readImage("test/data/blackbox/rssexpanded-1", "3.png");
            var binaryMap = new BinaryBitmap(new GlobalHistogramBinarizer(new BitmapLuminanceSource(image)));
            var row       = binaryMap.getBlackRow(binaryMap.Height / 2, null);

            int[] startEnd        = { 145, 243 }; //image pixels where the A1 pattern starts (at 124) and ends (at 214)
            int   value           = 0;            // A
            var   finderPatternA1 = new FinderPattern(value, startEnd, startEnd[0], startEnd[1], image.Height / 2);
            //{1, 8, 4, 1, 1};
            var dataCharacter = rssExpandedReader.decodeDataCharacter(row, finderPatternA1, true, true);

            Assert.AreEqual(98, dataCharacter.Value);
        }
      public void testFindFinderPatterns()
      {
         RSSExpandedReader rssExpandedReader = new RSSExpandedReader();

         String path = "test/data/blackbox/rssexpanded-1/2.png";

         if (!File.Exists(path))
         {
            // Support running from project root too
            path = Path.Combine("..\\..\\..\\Source", path);
         }

#if !SILVERLIGHT
         var image = new Bitmap(Image.FromFile(path));
#else
         var image = new WriteableBitmap(0, 0);
         image.SetSource(File.OpenRead(path));
#endif
         BinaryBitmap binaryMap = new BinaryBitmap(new GlobalHistogramBinarizer(new BitmapLuminanceSource(image)));
         int rowNumber = binaryMap.Height / 2;
         BitArray row = binaryMap.getBlackRow(rowNumber, null);
         List<ExpandedPair> previousPairs = new List<ExpandedPair>();

         ExpandedPair pair1 = rssExpandedReader.retrieveNextPair(row, previousPairs, rowNumber);
         previousPairs.Add(pair1);
         FinderPattern finderPattern = pair1.FinderPattern;
         Assert.IsNotNull(finderPattern);
         Assert.AreEqual(0, finderPattern.Value);

         ExpandedPair pair2 = rssExpandedReader.retrieveNextPair(row, previousPairs, rowNumber);
         previousPairs.Add(pair2);
         finderPattern = pair2.FinderPattern;
         Assert.IsNotNull(finderPattern);
         Assert.AreEqual(1, finderPattern.Value);

         ExpandedPair pair3 = rssExpandedReader.retrieveNextPair(row, previousPairs, rowNumber);
         previousPairs.Add(pair3);
         finderPattern = pair3.FinderPattern;
         Assert.IsNotNull(finderPattern);
         Assert.AreEqual(1, finderPattern.Value);

         //   the previous was the last pair
         Assert.IsNull(rssExpandedReader.retrieveNextPair(row, previousPairs, rowNumber));
      }
      private static void assertCorrectImage2binary(String path, String expected)
      {
         RSSExpandedReader rssExpandedReader = new RSSExpandedReader();

         if (!File.Exists(path))
         {
            // Support running from project root too
            path = Path.Combine("..\\..\\..\\Source", path);
         }

#if !SILVERLIGHT
         var image = new Bitmap(Image.FromFile(path));
#else
         var image = new WriteableBitmap(0, 0);
         image.SetSource(File.OpenRead(path));
#endif
         BinaryBitmap binaryMap = new BinaryBitmap(new GlobalHistogramBinarizer(new BitmapLuminanceSource(image)));
         int rowNumber = binaryMap.Height / 2;
         BitArray row = binaryMap.getBlackRow(rowNumber, null);

         Assert.IsTrue(rssExpandedReader.decodeRow2pairs(rowNumber, row));

         BitArray binary = BitArrayBuilder.buildBitArray(rssExpandedReader.Pairs);
         Assert.AreEqual(expected, binary.ToString());
      }
      public void testDecodeDataCharacter()
      {
         RSSExpandedReader rssExpandedReader = new RSSExpandedReader();

         String path = "test/data/blackbox/rssexpanded-1/3.png";
         if (!File.Exists(path))
         {
            // Support running from project root too
            path = Path.Combine("..\\..\\..\\Source", path);
         }

#if !SILVERLIGHT
         var image = new Bitmap(Image.FromFile(path));
#else
         var image = new WriteableBitmap(0, 0);
         image.SetSource(File.OpenRead(path));
#endif
         BinaryBitmap binaryMap = new BinaryBitmap(new GlobalHistogramBinarizer(new BitmapLuminanceSource(image)));
         BitArray row = binaryMap.getBlackRow(binaryMap.Height / 2, null);

         int[] startEnd = { 145, 243 };//image pixels where the A1 pattern starts (at 124) and ends (at 214)
         int value = 0; // A
#if !SILVERLIGHT
         FinderPattern finderPatternA1 = new FinderPattern(value, startEnd, startEnd[0], startEnd[1], image.Height / 2);
#else
         FinderPattern finderPatternA1 = new FinderPattern(value, startEnd, startEnd[0], startEnd[1], image.PixelHeight / 2);
#endif
         //{1, 8, 4, 1, 1};
         DataCharacter dataCharacter = rssExpandedReader.decodeDataCharacter(row, finderPatternA1, true, false);

         Assert.AreEqual(19, dataCharacter.Value);
         Assert.AreEqual(1007, dataCharacter.ChecksumPortion);
      }