⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qrcodeimagereader.java

📁 日本人写的QRcode的编码和解码的java程序
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		Line baseLineX, baseLineY, gridLineX, gridLineY;
		
		int logicalDistance = alignmentPattern.getLogicalDistance();
		int sin = finderPattern.getAngle()[0];
		int cos = finderPattern.getAngle()[1];
		Axis axis = new Axis(sin, cos, finderPattern.getModuleSize());
	
		int[] modulePitch = new int[4]; //top left bottom right偺弴偵奿擺

		modulePitch[0] = getAreaModulePitch(centers[0][0], centers[1][0], logicalDistance + 6);
		modulePitch[1] = getAreaModulePitch(centers[0][0], centers[0][1], logicalDistance + 6);
		axis.setModulePitch(modulePitch[0]);
		axis.setOrigin(centers[0][1]);
		modulePitch[2] = getAreaModulePitch(axis.translate(0, -3), centers[1][1], logicalDistance + 3);
		axis.setModulePitch(modulePitch[1]);
		axis.setOrigin(centers[1][0]);
		modulePitch[3] = getAreaModulePitch(axis.translate(-3, 0), centers[1][1], logicalDistance + 3);

		//X幉偵悅捈偺婎慄(堦斒偵廲)
		baseLineX = new Line();
		baseLineY = new Line();
		
		axis.setOrigin(centers[0][0]);
		modulePitch[0] = getAreaModulePitch(centers[0][0], centers[1][0], logicalDistance + 6);
		modulePitch[1] = getAreaModulePitch(centers[0][0], centers[0][1], logicalDistance + 6);
		axis.setModulePitch(modulePitch[0]);
		axis.setOrigin(centers[0][1]);
		modulePitch[2] = getAreaModulePitch(axis.translate(0,-3), centers[1][1], logicalDistance + 3);
		axis.setModulePitch(modulePitch[1]);
		axis.setOrigin(centers[1][0]);
		modulePitch[3] = getAreaModulePitch(axis.translate(-3,0), centers[1][1], logicalDistance + 3);
		
		
		axis.setOrigin(centers[0][0]);
		axis.setModulePitch(modulePitch[0]);
		baseLineX.setP1(axis.translate(-3,-3));

		axis.setModulePitch(modulePitch[1]);
		baseLineY.setP1(axis.translate(-3,-3));
		
		axis.setOrigin(centers[0][1]);
		axis.setModulePitch(modulePitch[2]);
		baseLineX.setP2(axis.translate(-3,3));
		
		axis.setOrigin(centers[1][0]);
		axis.setModulePitch(modulePitch[3]);
		baseLineY.setP2(axis.translate(3,-3));
		

		baseLineX.translate(1,1);
		baseLineY.translate(1,1);
		
		for (int i = 0; i < sqrtNumModules; i++) {
			gridLineX = new Line(baseLineX.getP1(), baseLineX.getP2());

			axis.setOrigin(gridLineX.getP1());
			axis.setModulePitch(modulePitch[0]);
			gridLineX.setP1(axis.translate(i,0));

			axis.setOrigin(gridLineX.getP2());
			axis.setModulePitch(modulePitch[2]);
			gridLineX.setP2(axis.translate(i,0));

			
			gridLineY = new Line(baseLineY.getP1(), baseLineY.getP2());
			
			axis.setOrigin(gridLineY.getP1());
			axis.setModulePitch(modulePitch[1]);
			gridLineY.setP1(axis.translate(0,i));

			axis.setOrigin(gridLineY.getP2());
			axis.setModulePitch(modulePitch[3]);
			gridLineY.setP2(axis.translate(0,i));
			

			samplingGrid[0][0][0][i] = gridLineX;
			samplingGrid[0][0][1][i] = gridLineY;
			
		}
		for (int ay = 0; ay < samplingGrid[0].length; ay++) {
			for (int ax = 0; ax < samplingGrid.length; ax++) {
				canvas.drawLines(samplingGrid[ax][ay][0], Color.LIGHTBLUE);
				canvas.drawLines(samplingGrid[ax][ay][1], Color.LIGHTBLUE);
			}
		}
		return samplingGrid;
	}
	

	
	//宆斣7乣13梡
	Line[][][][] getSamplingGrid7_13(FinderPattern finderPattern, AlignmentPattern alignmentPattern) {

		Point centers[][] = alignmentPattern.getCenter();
		centers[0][0] = finderPattern.getCenter(FinderPattern.UL);
		centers[2][0] = finderPattern.getCenter(FinderPattern.UR);
		centers[0][2] = finderPattern.getCenter(FinderPattern.DL);
		int sqrtNumModules = finderPattern.getSqrtNumModules(); //堦曈摉偨傝偺儌僕儏乕儖悢傪摼傞
		int sqrtNumArea = 2;
		int sqrtNumAreaModules = sqrtNumModules / sqrtNumArea;
		sqrtNumAreaModules++;
		Line[][][][] samplingGrid = new Line[sqrtNumArea][sqrtNumArea][2][sqrtNumAreaModules];
		Line baseLineX, baseLineY, gridLineX, gridLineY;

		int logicalDistance = alignmentPattern.getLogicalDistance();
		int sin = finderPattern.getAngle()[0];
		int cos = finderPattern.getAngle()[1];
		Axis axis = new Axis(sin, cos, finderPattern.getModuleSize());
		int[] modulePitch;
		for (int ay = 0; ay < sqrtNumArea; ay++) {
			for (int ax = 0; ax < sqrtNumArea; ax++) {
				modulePitch = new int[4]; //top left bottom right偺弴偵奿擺
				baseLineX = new Line();
				baseLineY = new Line();
				axis.setModulePitch(finderPattern.getModuleSize());
				if (ax == 0 && ay == 0) {
					axis.setOrigin(centers[0][0]);
					modulePitch[0] = getAreaModulePitch(axis.translate(0,3), centers[1][0], logicalDistance + 3);
					modulePitch[1] = getAreaModulePitch(axis.translate(3,0), centers[0][1], logicalDistance + 3);
					axis.setModulePitch(modulePitch[0]);
					modulePitch[2] = getAreaModulePitch(centers[0][1], centers[1][1], logicalDistance);
					axis.setModulePitch(modulePitch[1]);
					modulePitch[3] = getAreaModulePitch(centers[1][0], centers[1][1], logicalDistance);
					
					axis.setModulePitch(modulePitch[0]);
					baseLineX.setP1(axis.translate(-3,-3));

					axis.setModulePitch(modulePitch[1]);
					baseLineY.setP1(axis.translate(-3,-3));
					
					axis.setOrigin(centers[0][1]);
					axis.setModulePitch(modulePitch[2]);
					baseLineX.setP2(axis.translate(-6,0));
					
					axis.setOrigin(centers[1][0]);
					axis.setModulePitch(modulePitch[3]);
					baseLineY.setP2(axis.translate(0,-6));
				}
				else if (ax == 1 && ay == 0) {
					axis.setOrigin(centers[1][0]);
					modulePitch[0] = getAreaModulePitch(axis.translate(0,-3), centers[2][0], logicalDistance + 3);
					modulePitch[1] = getAreaModulePitch(centers[1][0], centers[1][1], logicalDistance);
					axis.setModulePitch(modulePitch[0]);
					modulePitch[2] = getAreaModulePitch(centers[1][1], centers[2][1], logicalDistance);
					axis.setModulePitch(modulePitch[1]);
					axis.setOrigin(centers[2][0]);
					modulePitch[3] = getAreaModulePitch(axis.translate(-3,0), centers[2][1], logicalDistance + 3);
					
					axis.setOrigin(centers[1][0]);
					axis.setModulePitch(modulePitch[1]);
					baseLineX.setP1(axis.translate(0,-6));

					baseLineY.setP1(axis.translate(0,-6));
					
					baseLineX.setP2(centers[1][1]);
					
					axis.setOrigin(centers[2][0]);
					axis.setModulePitch(modulePitch[3]);
					baseLineY.setP2(axis.translate(3,-3));
				}
				else if (ax == 0 && ay == 1) {
					modulePitch[0] = getAreaModulePitch(centers[0][1], centers[1][1], logicalDistance);
					axis.setOrigin(centers[0][2]);
					modulePitch[1] = getAreaModulePitch(centers[0][1], axis.translate(3,0), logicalDistance + 3);
					axis.setModulePitch(modulePitch[0]);
					modulePitch[2] = getAreaModulePitch(axis.translate(0,-3), centers[1][2], logicalDistance + 3);
					axis.setModulePitch(modulePitch[2]);
					modulePitch[3] = getAreaModulePitch(centers[1][1], centers[1][2], logicalDistance);
					
					axis.setOrigin(centers[0][1]);
					axis.setModulePitch(modulePitch[0]);
					baseLineX.setP1(axis.translate(-6,0));

					baseLineY.setP1(axis.translate(-6,0));
					
					axis.setOrigin(centers[0][2]);
					axis.setModulePitch(modulePitch[2]);
					baseLineX.setP2(axis.translate(-3, 3));
					
					baseLineY.setP2(centers[1][1]);					
				}
				else if (ax == 1 && ay == 1) {
					modulePitch[0] = getAreaModulePitch(centers[1][1], centers[2][1], logicalDistance);
					modulePitch[1] = getAreaModulePitch(centers[1][1], centers[1][2], logicalDistance);
					modulePitch[2] = getAreaModulePitch(centers[1][2], centers[2][2], logicalDistance);
					modulePitch[3] = getAreaModulePitch(centers[2][1], centers[2][2], logicalDistance);
					
					baseLineX.setP1(centers[1][1]);
					baseLineY.setP1(centers[1][1]);

					axis.setOrigin(centers[1][2]);
					axis.setModulePitch(modulePitch[1]);
					baseLineX.setP2(axis.translate(0,6));

					axis.setOrigin(centers[2][1]);
					axis.setModulePitch(modulePitch[0]);
					baseLineY.setP2(axis.translate(6,0));
				}
				


				baseLineX.translate(1,1);
				baseLineY.translate(1,1);
				
				for (int i = 0; i < sqrtNumAreaModules; i++) {
					gridLineX = new Line(baseLineX.getP1(), baseLineX.getP2());

					axis.setOrigin(gridLineX.getP1());
					axis.setModulePitch(modulePitch[0]);
					gridLineX.setP1(axis.translate(i,0));

					axis.setOrigin(gridLineX.getP2());
					axis.setModulePitch(modulePitch[2]);
					gridLineX.setP2(axis.translate(i,0));
	
					
					gridLineY = new Line(baseLineY.getP1(), baseLineY.getP2());
					
					axis.setOrigin(gridLineY.getP1());
					axis.setModulePitch(modulePitch[1]);
					gridLineY.setP1(axis.translate(0,i));

					axis.setOrigin(gridLineY.getP2());
					axis.setModulePitch(modulePitch[3]);
					gridLineY.setP2(axis.translate(0,i));
					

					samplingGrid[ax][ay][0][i] = gridLineX;
					samplingGrid[ax][ay][1][i] = gridLineY;
					
				}
			}
		}
		for (int ay = 0; ay < samplingGrid[0].length; ay++) {
			for (int ax = 0; ax < samplingGrid.length; ax++) {
				canvas.drawLines(samplingGrid[ax][ay][0], Color.LIGHTBLUE);
				canvas.drawLines(samplingGrid[ax][ay][1], Color.LIGHTBLUE);
			}
		}
		return samplingGrid;
	}
	//宆斣14乣20梡
//	Line[][][][] getSamplingGrid14_20(FinderPattern finderPattern, AlignmentPattern alignmentPattern) {
//
//		Point centers[][] = alignmentPattern.getCenter();
//		centers[0][0] = finderPattern.getCenter(FinderPattern.UL);
//		centers[3][0] = finderPattern.getCenter(FinderPattern.UR);
//		centers[0][3] = finderPattern.getCenter(FinderPattern.DL);
//		int sqrtNumModules = finderPattern.getSqrtNumModules(); //堦曈摉偨傝偺儌僕儏乕儖悢傪摼傞
//		int sqrtNumArea = 3;
//		int sqrtNumAreaModules = sqrtNumModules / sqrtNumArea;
//		sqrtNumAreaModules+=3;
//		Line[][][][] samplingGrid = new Line[sqrtNumArea][sqrtNumArea][2][sqrtNumAreaModules];
//		Line baseLineX, baseLineY, gridLineX, gridLineY;
//		Point[] targetCenters;
//		int logicalDistance = alignmentPattern.getLogicalDistance();
//		int sin = finderPattern.getAngle()[0];
//		int cos = finderPattern.getAngle()[1];
//		Axis axis = new Axis(sin, cos, finderPattern.getModuleSize());
//		int[] modulePitch;
//		for (int ay = 0; ay < sqrtNumArea; ay++) {
//			for (int ax = 0; ax < sqrtNumArea; ax++) {
//				modulePitch = new int[4]; //top left bottom right偺弴偵奿擺
//				baseLineX = new Line();
//				baseLineY = new Line();
//				axis.setModulePitch(finderPattern.getModuleSize());

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -