package cn.dl;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
/**
@author n
二维码玩玩
*/
public class Qrcode {
/*
public static void getQrcodeImg(String content,String imgPath) {
//实例化Qrcode对象
Qrcode qrcode = new Qrcode();
qrcode.setQrcodeErrorCorrect('M');
qrcode.setQrcodeEncodeMode('B');
qrcode.setQrcodeVersion(15);
int width = 235;
int height = 235;
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
Graphics2D gs = image.createGraphics();
gs.setBackground(Color.white);
gs.clearRect(0, 0, width, height);
gs.setColor(Color.black);
try {
byte[] codeOut;
codeOut = content.getBytes("utf-8");
** boolean[][] code = qrcode.calQrcode(codeOut);**
for (int i = 0; i< code.length; i++) {
for (int j = 0; j < code.length; j++) {
if (code[j][i]) {
gs.fillRect(j*3+2, i*3+2, 3, 3);
}
}
}
gs.dispose();
image.flush();
//保存
ImageIO.write(image, "png", new File(imgPath));
System.out.println("我的二维码在哪里");
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
private boolean[][] calQrcode(byte[] codeOut) {
// TODO 自动生成的方法存根
return null;
}
private void setQrcodeVersion(int i) {
// TODO 自动生成的方法存根
}
private void setQrcodeEncodeMode(char c) {
// TODO 自动生成的方法存根
}
private void setQrcodeErrorCorrect(char c) {
// TODO 自动生成的方法存根
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
**getQrcodeImg("我爱我们","D:/Lin/JavaText/cn.dl/lin.png");
**
}
}
最好把调用栈发出来,这样能准确知道null异常出现的代码位置
main()函数中,代码改成这样,运行时就有栈信息了
try{
getQrcodeImg("我爱我们","D:/Lin/JavaText/cn.dl/lin.png");
} catch(Exception ex){
ex.pirntStackTrace();
}
从代码来看,大致应是如下代码的位置出了问题
for (int i = 0; i< code.length; i++) {
原因是这个函数返回的是null,code引用当然不能用了
private boolean[][] calQrcode(byte[] codeOut) {
// TODO 自动生成的方法存根
return null;
}