public virtual QRCodeSymbol getQRCodeSymbol(int[][] image) { int longSide = (image.Length < image[0].Length)?image[0].Length:image.Length; QRCodeImageReader.DECIMAL_POINT = 23 - QRCodeUtility.sqrt(longSide / 256); bitmap = filterImage(image); canvas.println("Drawing matrix."); canvas.drawMatrix(bitmap); canvas.println("Scanning Finder Pattern."); FinderPattern finderPattern = null; try { finderPattern = FinderPattern.findFinderPattern(bitmap); } catch (FinderPatternNotFoundException) { canvas.println("Not found, now retrying..."); bitmap = applyCrossMaskingMedianFilter(bitmap, 5); canvas.drawMatrix(bitmap); for (int i = 0; i < 1000000000; i++) { ; } try { finderPattern = FinderPattern.findFinderPattern(bitmap); } catch (FinderPatternNotFoundException e2) { throw new SymbolNotFoundException(e2.Message); } catch (VersionInformationException e2) { throw new SymbolNotFoundException(e2.Message); } } catch (VersionInformationException e) { throw new SymbolNotFoundException(e.Message); } canvas.println("FinderPattern at"); String finderPatternCoordinates = finderPattern.getCenter(FinderPattern.UL).ToString() + finderPattern.getCenter(FinderPattern.UR).ToString() + finderPattern.getCenter(FinderPattern.DL).ToString(); canvas.println(finderPatternCoordinates); int[] sincos = finderPattern.getAngle(); canvas.println("Angle*4098: Sin " + System.Convert.ToString(sincos[0]) + " " + "Cos " + System.Convert.ToString(sincos[1])); int version = finderPattern.Version; canvas.println("Version: " + System.Convert.ToString(version)); if (version < 1 || version > 40) { throw new InvalidVersionException("Invalid version: " + version); } AlignmentPattern alignmentPattern = null; try { alignmentPattern = AlignmentPattern.findAlignmentPattern(bitmap, finderPattern); } catch (AlignmentPatternNotFoundException e) { throw new SymbolNotFoundException(e.Message); } int matrixLength = alignmentPattern.getCenter().Length; canvas.println("AlignmentPatterns at"); for (int y = 0; y < matrixLength; y++) { String alignmentPatternCoordinates = ""; for (int x = 0; x < matrixLength; x++) { alignmentPatternCoordinates += alignmentPattern.getCenter()[x][y].ToString(); } canvas.println(alignmentPatternCoordinates); } //for(int i = 0; i < 500000; i++) Console.out.println(""); canvas.println("Creating sampling grid."); //[TODO] need all-purpose method //samplingGrid = getSamplingGrid2_6(finderPattern, alignmentPattern); samplingGrid = getSamplingGrid(finderPattern, alignmentPattern); canvas.println("Reading grid."); bool[][] qRCodeMatrix = null; try { qRCodeMatrix = getQRCodeMatrix(bitmap, samplingGrid); } catch (System.IndexOutOfRangeException) { throw new SymbolNotFoundException("Sampling grid exceeded image boundary"); } //canvas.drawMatrix(qRCodeMatrix); return(new QRCodeSymbol(qRCodeMatrix)); }
public virtual QRCodeSymbol getQRCodeSymbol(int[][] image) { int num = ((image.Length < image[0].Length) ? image[0].Length : image.Length); DECIMAL_POINT = 23 - QRCodeUtility.sqrt(num / 256); bitmap = filterImage(image); canvas.println("Drawing matrix."); canvas.drawMatrix(bitmap); canvas.println("Scanning Finder Pattern."); FinderPattern finderPattern = null; try { finderPattern = FinderPattern.findFinderPattern(bitmap); } catch (FinderPatternNotFoundException) { canvas.println("Not found, now retrying..."); bitmap = applyCrossMaskingMedianFilter(bitmap, 5); canvas.drawMatrix(bitmap); for (int i = 0; i < 1000000000; i++) { } try { finderPattern = FinderPattern.findFinderPattern(bitmap); } catch (FinderPatternNotFoundException ex) { throw new SymbolNotFoundException(ex.Message); } catch (VersionInformationException ex2) { throw new SymbolNotFoundException(ex2.Message); } } catch (VersionInformationException ex4) { throw new SymbolNotFoundException(ex4.Message); } canvas.println("FinderPattern at"); string str = finderPattern.getCenter(0).ToString() + finderPattern.getCenter(1).ToString() + finderPattern.getCenter(2).ToString(); canvas.println(str); int[] angle = finderPattern.getAngle(); canvas.println("Angle*4098: Sin " + Convert.ToString(angle[0]) + " Cos " + Convert.ToString(angle[1])); int version = finderPattern.Version; canvas.println("Version: " + Convert.ToString(version)); if (version < 1 || version > 40) { throw new InvalidVersionException("Invalid version: " + version); } AlignmentPattern alignmentPattern = null; try { alignmentPattern = AlignmentPattern.findAlignmentPattern(bitmap, finderPattern); } catch (AlignmentPatternNotFoundException ex5) { throw new SymbolNotFoundException(ex5.Message); } int num2 = alignmentPattern.getCenter().Length; canvas.println("AlignmentPatterns at"); for (int j = 0; j < num2; j++) { string text = ""; for (int k = 0; k < num2; k++) { text += alignmentPattern.getCenter()[k][j].ToString(); } canvas.println(text); } canvas.println("Creating sampling grid."); samplingGrid = getSamplingGrid(finderPattern, alignmentPattern); canvas.println("Reading grid."); bool[][] array = null; try { array = getQRCodeMatrix(bitmap, samplingGrid); } catch (IndexOutOfRangeException) { throw new SymbolNotFoundException("Sampling grid exceeded image boundary"); } return(new QRCodeSymbol(array)); }