java语言几十行轻松搞定二维码程序

一个简单的java实现的二维码创建程序,可以用Eclipse和idea都可以实现,关键是要自己导入的正确,这个程序中引用了一个二维码作者编写的一个包,所以实现的低层的代码都封装在一个包里面了

package com.ps.aibianmadechengxuyuan;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

import com.swetake.util.Qrcode;

public class CreateQRCore {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		Qrcode x=new Qrcode();//jar 包里面的黑核心类
		x.setQrcodeErrorCorrect('M');//纠错等级
		x.setQrcodeEncodeMode('B');//N代表的是数字,A代表a-z,B代表其他字符
		x.setQrcodeVersion(7);//版本,1-40
		String qrData="微信公众号:爱编码的程序员";
		
		int width =67+12*(7-1);
		int height =67+12*(7-1);
		//创建一个缓冲区的图片
		BufferedImage bufferedImage =new BufferedImage(67+12*(7-1),67+12*(7-1),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;//偏移量
		
		byte[] d =qrData.getBytes("gb2312");
		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("D:/code/qrcode1.png"));
	}

}

package com.ps.aibianmadechengxuyuan;
/*wei xin gong zong hao :爱编码的程序员*/
import java.awt.image.BufferedImage;

import jp.sourceforge.qrcode.data.QRCodeImage;

public class MYQRCodeImage implements QRCodeImage {

	BufferedImage bufferedImage;
	
	
	public MYQRCodeImage(BufferedImage bufferedImage) {
		this.bufferedImage=bufferedImage;
		
		
	}
	
	
	@Override
	public int getHeight() {
		// TODO Auto-generated method stub
		return bufferedImage.getHeight();
	}

	@Override
	public int getPixel(int arg0, int arg1) {
		// TODO Auto-generated method stub
		return bufferedImage.getRGB(arg0, arg1);
	}

	@Override
	public int getWidth() {
		// TODO Auto-generated method stub
		return bufferedImage.getWidth();
	}

}

package com.ps.aibianmadechengxuyuan;
/*wei xin gong zong hao: 爱编码的程序员**/
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;
import java.io.IOException;
import jp.sourceforge.qrcode.QRCodeDecoder;

public class ReadQRCode {

	public static void main(String[] args)  throws Exception {
		File file =new File("D:/code/qrcode1.png");
		BufferedImage bufferedImage=ImageIO.read(file);
		
		QRCodeDecoder codeDecoder =new QRCodeDecoder();
		
	String result=	new String (codeDecoder.decode(new MYQRCodeImage(bufferedImage)),"gb2312");
	System.out.println("result");
	}

}

实现的效果图就是一个正方形的二维码,所识别的信息就是CreateQRCore类中String qrData="微信公众号:爱编码的程序员";的内容,比如你想实现一个扫码就会跳转到一个网页的,就String qrData后面改写自己的想实现的网址就可以了。

发布了32 篇原创文章 · 获赞 9 · 访问量 3132

猜你喜欢

转载自blog.csdn.net/weixin_43501566/article/details/104942441