亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? qrcodeimagereader.java

?? QR code是日本人開發(fā)的現(xiàn)在很流行的國際通用的二維條形碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package jp.sourceforge.qrcode.reader;import java.util.Vector;import jp.sourceforge.qrcode.QRCodeDecoder;import jp.sourceforge.qrcode.data.*;import jp.sourceforge.qrcode.exception.AlignmentPatternNotFoundException;import jp.sourceforge.qrcode.exception.FinderPatternNotFoundException;import jp.sourceforge.qrcode.exception.SymbolNotFoundException;import jp.sourceforge.qrcode.exception.InvalidVersionException;import jp.sourceforge.qrcode.exception.VersionInformationException;import jp.sourceforge.qrcode.geom.*;import jp.sourceforge.qrcode.pattern.*;import jp.sourceforge.qrcode.util.*;public class QRCodeImageReader {	DebugCanvas canvas;	//DP = 	//23 ...side pixels of image will be limited maximum 255 (8 bits)	//22 .. side pixels of image will be limited maximum 511 (9 bits)	//21 .. side pixels of image will be limited maximum 1023 (10 bits)		//I think it's good idea to use DECIMAL_POINT with type "long" too.		public static int DECIMAL_POINT = 21;	public static final boolean POINT_DARK = true;	public static final boolean POINT_LIGHT = false;	SamplingGrid samplingGrid;	boolean[][] bitmap;	//int numModuleAtSide; //デコード対象のシンボルにおける一辺のモジュールの數(shù)		public QRCodeImageReader() {		this.canvas = QRCodeDecoder.getCanvas();	}	// local class for module pitch	protected class ModulePitch	{		public int top;		public int left;		public int bottom;		public int right;	};	boolean[][] applyMedianFilter(boolean[][] image, int threshold) {		boolean[][] filteredMatrix = new boolean[image.length][image[0].length];		//filtering noise in image with median filter		int numPointDark;		for (int y = 1; y < image[0].length - 1; y++) {			for (int x = 1; x < image.length - 1; x++) {			//if (image[x][y] == true) {			numPointDark = 0;			for (int fy = -1; fy < 2; fy++) {				for (int fx = -1; fx < 2; fx++) {					if (image[x + fx][y + fy] == true) {						numPointDark++;					}				}			}			if (numPointDark > threshold) 				filteredMatrix[x][y] = POINT_DARK;			}		}				return filteredMatrix;	}	boolean[][] applyCrossMaskingMedianFilter(boolean[][] image, int threshold) {		boolean[][] filteredMatrix = new boolean[image.length][image[0].length];		//filtering noise in image with median filter		int numPointDark;		for (int y = 2; y < image[0].length - 2; y++) {			for (int x = 2; x < image.length - 2; x++) {			//if (image[x][y] == true) {			numPointDark = 0;			for (int f = -2; f < 3; f++) {				if (image[x+f][y] == true)					numPointDark++;								if (image[x][y+f] == true)					numPointDark++;			}						if (numPointDark > threshold) 				filteredMatrix[x][y] = POINT_DARK;			}		}				return filteredMatrix;	}		boolean[][] filterImage(int[][] image) {		imageToGrayScale(image);		boolean[][] bitmap = grayScaleToBitmap(image);		return bitmap;	}		void imageToGrayScale(int[][] image) {		for (int y = 0; y < image[0].length; y++) {			for (int x = 0; x < image.length; x++) {				int r = image[x][y] >> 16 & 0xFF;				int g = image[x][y] >> 8 & 0xFF;				int b = image[x][y] & 0xFF;				int m = (r * 30 + g * 59 + b * 11) / 100;				image[x][y] = m;			}		}	}		boolean[][] grayScaleToBitmap(int[][] grayScale) {		int[][] middle = getMiddleBrightnessPerArea(grayScale);		int sqrtNumArea = middle.length;		int areaWidth = grayScale.length / sqrtNumArea;		int areaHeight = grayScale[0].length / sqrtNumArea;		boolean[][] bitmap = new boolean[grayScale.length][grayScale[0].length];		for (int ay = 0; ay < sqrtNumArea; ay++) {			for (int ax = 0; ax < sqrtNumArea; ax++) {				for (int dy = 0; dy < areaHeight; dy++) {					for (int dx = 0; dx < areaWidth; dx++) {						bitmap[areaWidth * ax + dx][areaHeight * ay + dy] = (grayScale[areaWidth * ax + dx][areaHeight * ay + dy] < middle[ax][ay]) ? true : false;					}				}			}		}		return bitmap;	}		int[][] getMiddleBrightnessPerArea(int[][] image) {		final int numSqrtArea = 4;		//obtain middle brightness((min + max) / 2) per area		int areaWidth = image.length / numSqrtArea;		int areaHeight = image[0].length / numSqrtArea;		int[][][] minmax = new int[numSqrtArea][numSqrtArea][2];		for (int ay = 0; ay < numSqrtArea; ay++) {			for (int ax = 0; ax < numSqrtArea; ax++) {				minmax[ax][ay][0] = 0xFF;				for (int dy = 0; dy < areaHeight; dy++) {					for (int dx = 0; dx < areaWidth; dx++) {						int target = image[areaWidth * ax + dx][areaHeight * ay + dy];						if (target < minmax[ax][ay][0]) minmax[ax][ay][0] = target;						if (target > minmax[ax][ay][1]) minmax[ax][ay][1] = target;					}				}				//minmax[ax][ay][0] = (minmax[ax][ay][0] + minmax[ax][ay][1]) / 2;			}		}		int[][] middle =  new int[numSqrtArea][numSqrtArea];		for (int ay = 0; ay < numSqrtArea; ay++) {			for (int ax = 0; ax < numSqrtArea; ax++) {				middle[ax][ay] = (minmax[ax][ay][0] + minmax[ax][ay][1]) / 2;				//System.out.print(middle[ax][ay] + ",");			}			//System.out.println("");		}		//System.out.println("");		return middle;	}		public QRCodeSymbol getQRCodeSymbol(int[][] image) 			throws SymbolNotFoundException {		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 e) {			canvas.println("Not found, now retrying...");			bitmap = applyCrossMaskingMedianFilter(bitmap, 5);			canvas.drawMatrix(bitmap);			try {				finderPattern = FinderPattern.findFinderPattern(bitmap);			} catch (FinderPatternNotFoundException e2) {				throw new SymbolNotFoundException(e2.getMessage());			} catch (VersionInformationException e2) {				throw new SymbolNotFoundException(e2.getMessage());			}		} catch (VersionInformationException e) {			throw new SymbolNotFoundException(e.getMessage());		}		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 " + Integer.toString(sincos[0]) + "  " + "Cos " + Integer.toString(sincos[1]));		int version = finderPattern.getVersion();		canvas.println("Version: " + Integer.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.getMessage());		}				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++) System.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.");		boolean[][] qRCodeMatrix = null;		try {			qRCodeMatrix = getQRCodeMatrix(bitmap, samplingGrid);		} catch (ArrayIndexOutOfBoundsException e) {			throw new SymbolNotFoundException("Sampling grid exceeded image boundary");		}		//canvas.drawMatrix(qRCodeMatrix);		return new QRCodeSymbol(qRCodeMatrix);	}		public QRCodeSymbol getQRCodeSymbolWithAdjustedGrid(Point adjust)		throws IllegalStateException, SymbolNotFoundException {		if (bitmap == null || samplingGrid == null) {			throw new IllegalStateException("This method must be called after QRCodeImageReader.getQRCodeSymbol() called");		}		samplingGrid.adjust(adjust);		canvas.println("Sampling grid adjusted d("+adjust.getX()+","+adjust.getY()+")");		boolean[][] qRCodeMatrix = null;		try { 			qRCodeMatrix = getQRCodeMatrix(bitmap, samplingGrid);		} catch (ArrayIndexOutOfBoundsException e) {			throw new SymbolNotFoundException("Sampling grid exceeded image boundary");					}		return new QRCodeSymbol(qRCodeMatrix);	}		/**	 * Generic Sampling grid method	 */	SamplingGrid getSamplingGrid(FinderPattern finderPattern, AlignmentPattern alignmentPattern) {		Point centers[][] = alignmentPattern.getCenter();		int version = finderPattern.getVersion();		int sqrtCenters = (version / 7) + 2;				centers[0][0] = finderPattern.getCenter(FinderPattern.UL);		centers[sqrtCenters-1][0] = finderPattern.getCenter(FinderPattern.UR);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲伦理在线精品| 香蕉影视欧美成人| 欧美日韩三级一区| 国产在线日韩欧美| 亚洲香肠在线观看| 国产精品乱码久久久久久| 91精品国产欧美一区二区成人 | 欧美精品黑人性xxxx| 不卡视频免费播放| 国产一区二区三区在线看麻豆| 亚洲欧美欧美一区二区三区| 国产三级精品三级在线专区| 6080午夜不卡| 色av一区二区| 成人综合在线观看| 精品一区二区免费在线观看| 香蕉影视欧美成人| 一区二区三区日本| 亚洲精品乱码久久久久久黑人| 久久久久国产精品人| 欧美电影免费观看高清完整版在线 | 欧美一区二区三区免费在线看 | 欧美日韩在线电影| 99re6这里只有精品视频在线观看| 看电影不卡的网站| 人人爽香蕉精品| 亚洲一二三专区| 一区二区三区四区国产精品| 综合久久一区二区三区| 亚洲国产成人一区二区三区| 久久久久国产成人精品亚洲午夜| 日韩亚洲电影在线| 欧美一卡2卡三卡4卡5免费| 欧美无人高清视频在线观看| 一本久久a久久精品亚洲| 99这里只有精品| 91在线视频免费91| 99视频超级精品| 色婷婷av一区| 欧美日韩久久久一区| 欧美日韩一区中文字幕| 欧美三级资源在线| 欧美日韩免费电影| 欧美福利一区二区| 日韩久久久久久| 精品国产免费一区二区三区四区| 日韩精品在线网站| 久久精品视频一区二区三区| 久久久久久9999| 国产精品少妇自拍| 亚洲人成7777| 亚洲成人一区在线| 另类欧美日韩国产在线| 国产一区二区三区久久久| 国产69精品久久777的优势| av午夜精品一区二区三区| 91在线小视频| 欧美日韩mp4| 精品第一国产综合精品aⅴ| 男人的j进女人的j一区| 国产综合色视频| 不卡一区二区在线| 欧美性xxxxxx少妇| 精品国产伦一区二区三区观看方式| 国产视频一区二区三区在线观看| 中文字幕一区二区三区在线播放| 亚洲免费电影在线| 天天影视色香欲综合网老头| 狠狠狠色丁香婷婷综合激情| 成人激情av网| 欧美日韩亚州综合| 亚洲精品一区二区三区蜜桃下载 | 亚洲欧美日韩在线播放| 午夜日韩在线电影| 国产乱码精品一区二区三区忘忧草 | 国产露脸91国语对白| 色中色一区二区| 欧美一级午夜免费电影| 国产视频一区在线播放| 亚洲美女电影在线| 狠狠色伊人亚洲综合成人| 色综合久久九月婷婷色综合| 欧美刺激午夜性久久久久久久 | 国产情人综合久久777777| 亚洲激情自拍偷拍| 国产主播一区二区三区| 91国偷自产一区二区三区观看| 日韩女优av电影在线观看| 亚洲欧美激情插| 久久99精品一区二区三区 | 久久久蜜桃精品| 亚洲一级二级在线| 国产高清亚洲一区| 欧美高清www午色夜在线视频| 国产日本欧美一区二区| 日韩经典中文字幕一区| 97久久超碰精品国产| 欧美成人a在线| 一区二区三区色| 国产精品一卡二卡| 欧美一级电影网站| 亚洲国产日韩a在线播放| av色综合久久天堂av综合| 久久亚洲综合av| 免费在线观看成人| 欧美少妇bbb| 亚洲欧洲制服丝袜| 成人涩涩免费视频| 欧美va亚洲va| 丝袜美腿一区二区三区| 色悠久久久久综合欧美99| 国产精品卡一卡二| 国产91精品精华液一区二区三区 | 一本大道久久a久久精品综合| 精品国产乱码久久久久久影片| 调教+趴+乳夹+国产+精品| 91麻豆国产福利在线观看| 国产欧美精品一区| 国产精品一区二区三区网站| 日韩视频一区二区| 免费在线一区观看| 在线电影一区二区三区| 亚洲一区二区视频| 欧洲av在线精品| 亚洲久本草在线中文字幕| av电影在线观看完整版一区二区| 久久精品日韩一区二区三区| 国产一区欧美一区| 日韩三级伦理片妻子的秘密按摩| 日韩**一区毛片| 91精品免费观看| 美女在线观看视频一区二区| 欧美一区二区在线观看| 蜜桃传媒麻豆第一区在线观看| 51精品视频一区二区三区| 污片在线观看一区二区| 欧美美女黄视频| 麻豆精品在线视频| 精品国产露脸精彩对白| 国产精品18久久久久久久久久久久 | 成人夜色视频网站在线观看| 国产日本一区二区| 成人综合在线视频| 亚洲天堂av老司机| 91行情网站电视在线观看高清版| 亚洲综合色成人| 91精品久久久久久久久99蜜臂| 美女视频免费一区| 亚洲精品一区二区三区99| 国产精品 欧美精品| 国产精品午夜久久| 色噜噜狠狠成人网p站| 日韩国产精品大片| 久久久一区二区| 99精品1区2区| 亚洲国产精品一区二区www| 91精品国产综合久久蜜臀| 狠狠色狠狠色综合系列| 国产精品久线观看视频| 欧美伊人精品成人久久综合97| 奇米精品一区二区三区在线观看| 26uuu国产电影一区二区| 99视频有精品| 五月激情综合色| 国产午夜精品久久久久久免费视| 成人av免费在线播放| 夜夜嗨av一区二区三区中文字幕| 337p亚洲精品色噜噜狠狠| 国产一区二区三区日韩| 亚洲精品国产第一综合99久久| 欧美区视频在线观看| 国产高清视频一区| 亚洲精品国产第一综合99久久| 日韩午夜激情av| 99久久国产综合精品麻豆| 视频在线观看一区| 国产精品免费丝袜| 91麻豆精品国产无毒不卡在线观看 | 亚洲一区二区三区中文字幕| 久久综合久久99| 色综合久久综合网97色综合 | 成人综合日日夜夜| 婷婷综合五月天| 国产欧美一区在线| 欧美影片第一页| 国产69精品久久777的优势| 婷婷亚洲久悠悠色悠在线播放| 国产视频一区在线播放| 欧美喷水一区二区| 91蜜桃网址入口| 国产精品一区二区男女羞羞无遮挡 | 欧美一区二区福利视频| 97超碰欧美中文字幕| 久久国产生活片100| 亚洲午夜久久久| 成人欧美一区二区三区1314| 久久综合色之久久综合| 在线精品观看国产| 成人av电影观看| 国产一区二区中文字幕|