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后面改写自己的想实现的网址就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值