Java、JavaScript生成二維碼

一、java生成二維碼

這裏使用QRCode方式生成二維碼

需要導入的jar包的網址:

生成二維碼:http://www.swetake.com/qrcode/index-e.html
讀取二維碼:https://osdn.jp/projects/qrcode

因爲這兩個jar包的名字相同,所以導入工程時要重命名

代碼如下

生成二維碼:

public static void main(String[] args) throws IOException {
		
		Qrcode x=new Qrcode();
		x.setQrcodeErrorCorrect('M');	//糾錯等級,H,M,L,Q
		x.setQrcodeEncodeMode('B');//N 代表數字  A 代表a-Z  B 代表其他字符
		x.setQrcodeVersion(7);	//版本 0-40
		String qrData = "www.taobao.com";
		byte[] d =qrData.getBytes();
		//byte[] d =qrData.getBytes("gb2312");  如果有漢字的話
		
		int width = 67 + 12*(7-1);	//二維碼寬度高度的公式
		int height = 67 + 12*(7-1);
		BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		Graphics2D gs = bufferedImage.createGraphics();
		gs.setBackground(Color.WHITE);	//設置背景顏色
		gs.setColor(Color.BLACK);	//設置二維碼顏色
		gs.clearRect(0, 0, width, height);
		
		int pixoff = 2;//偏移量,防止出錯
		if (d.length>0 && d.length <120){
		    boolean[][] s = x.calQrcode(d);

		    for (int i=0;i<s.length;i++){
				for (int j=0;j<s.length;j++){
				    if (s[j][i]) {
					gs.fillRect(j*3+pixoff,i*3+pixoff,3,3);
				    }
				}
		    }
		}
		gs.dispose();
		bufferedImage.flush();
		ImageIO.write(bufferedImage,"png",new File("F:"+File.separator+"a.png"));	//將二維碼寫到F盤裏

	}

讀取二維碼:

自定義類

	public class MyQRCode implements QRCodeImage {	//實現接口
		BufferedImage bufferedImage;
		public MyQRCode(BufferedImage bufferedImage){	//自定義的構造方法
			this.bufferedImage = bufferedImage;
		}
		public int getHeight() {
		
			return this.bufferedImage.getHeight();	//得到二維碼的高度
		}

		public int getPixel(int arg0, int arg1) {
			return this.bufferedImage.getRGB(arg0, arg1);
		}

		public int getWidth() {	//得到二維碼的寬度
			return this.bufferedImage.getWidth();
		}

	}
讀取二維碼的類

	public static void main(String []args) throws Exception{
		File file = new File("F:"+File.separator+"a.png");	//二維碼圖片所在的路徑
		BufferedImage bufferedImage = ImageIO.read(file);
		QRCodeDecoder codeDecoder = new QRCodeDecoder();
		
		//將二維碼解碼成byte數組,需要一個QRCodeImage類型的參數
		//QRCodeImage是一個接口,所以我們需要自定義一個類並實現QRCodeImage接口
		byte[] b = codeDecoder.decode(new MyQRCode(bufferedImage));	
		String s = new String(b,"gb2312");
		System.out.println(s);//輸出網址
	}

二、JavaScript生成二維碼

需要導入的javascript文件:jquery-qrcode-1.0.zip,這個文件的下載鏈接:https://github.com/jeromeetienne/jquery-qrcode,當然還需要引入jquery

源代碼:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		
		<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
		<!--jquery.qrcode.min.js文件一定要在jquery-1.7.2.min.js下引入-->
		<script type="text/javascript" src="jquery.qrcode.min.js"></script>
		
	</head>
	
	<body>
		<!--存放二維碼的div-->
		<div id="qrcode"></div>
		<!--javascript代碼一定要在div下寫-->
		<script type="text/javascript">

			jQuery('#qrcode').qrcode("www.baidu.com");

			//生成二維碼的同時可以設置寬度和高度
	//		jQuery('#qrcode').qrcode({width: 400,height: 400,text: "www.baidu.com"});
		</script>
	</body>
</html>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章