java生成二维码

采用java生成二维码
需要下载google的zxing-core.jar包。

package com.qrcode;

import com.google.zxing.common.BitMatrix;

import javax.imageio.ImageIO;
import java.io.File;
import java.io.OutputStream;
import java.io.IOException;
import java.awt.image.BufferedImage;
/**
* 用于生成图片帮助类
*/
public final class MatrixToImageWriter {

private static final int BLACK = 0xFF000000;
private static final int WHITE = 0xFFFFFFFF;

private MatrixToImageWriter() {
}

public static BufferedImage toBufferedImage(BitMatrix matrix) {
int width = matrix.getWidth();
int height = matrix.getHeight();
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);
}
}
return image;
}

public static void writeToFile(BitMatrix matrix, String format, File file)
throws IOException {
BufferedImage image = toBufferedImage(matrix);
if (!ImageIO.write(image, format, file)) {
throw new IOException("Could not write an image of format "
+ format + " to " + file);
}
}

public static void writeToStream(BitMatrix matrix, String format,
OutputStream stream) throws IOException {
BufferedImage image = toBufferedImage(matrix);
if (!ImageIO.write(image, format, stream)) {
throw new IOException("Could not write an image of format "
+ format);
}
}

}


package com.qrcode;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;

/**
* 二维码图片
*/
public class CreateQrImage {
/**
* 生成二维码图片(用于Web工程)
* @param content 二维码内容
* @param fileName 生成图片名称
* @param outputFile 文件名
*/
public static void createWebQrcodeImage(String content, String fileName, String outputFile) {
try {
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
Map<EncodeHintType, String> hints = new HashMap<EncodeHintType, String>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
BitMatrix bitMatrix = multiFormatWriter.encode(content,
BarcodeFormat.QR_CODE, 200, 200, hints);
String path = getWebImagePath() + outputFile;
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
File fileImage = new File(path, fileName + ".gif");
MatrixToImageWriter.writeToFile(bitMatrix, "gif", fileImage);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 生成二维码图片(java工程测试)
* @param content 二维码内容
* @param fileName 生成图片名称
* @param outputFile 文件名(例如:c:\java)
*/
public static void createBaseQrcodeImage(String content, String imageName, String outputFilePath) {
try {
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
Map<EncodeHintType, String> hints = new HashMap<EncodeHintType, String>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
BitMatrix bitMatrix = multiFormatWriter.encode(content,
BarcodeFormat.QR_CODE, 200, 200, hints);
String path = outputFilePath;
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
File fileImage = new File(path, imageName + ".gif");
MatrixToImageWriter.writeToFile(bitMatrix, "gif", fileImage);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 删除二维码图片(用于Web工程)
* @param fileName 图片名称
* @param outputFile 文件名称
*/
public static void webDeleteImage(String fileName, String outputFile) {
try {
File fileImage = new File(getWebImagePath() + outputFile, fileName + ".gif");
if (fileImage.exists()) {
fileImage.delete();
}
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 删除二维码图片(java工程测试)
* @param fileName 图片名称
* @param outputFile 文件名(例如:c:\java)
*/
public static void baseDeleteImage(String fileName, String outputFilePath) {
try {
File fileImage = new File(outputFilePath, fileName + ".gif");
if (fileImage.exists()) {
fileImage.delete();
}
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 图片路径(用于Web工程)
*/
public static String getWebImagePath(){
StringBuffer msg = new StringBuffer();
String path = CreateQrImage.class.getProtectionDomain().getCodeSource().getLocation().getFile();
try {
path = new File(path).getCanonicalPath();
} catch (IOException e) {
e.printStackTrace();
}
int pos = path.lastIndexOf("WEB-INF");
if (pos >= 0) {
path = path.substring(0, pos);
msg.setLength(0);
msg.append(path);
}
return msg.toString();
}

public static void main(String[] args){
//调用java工程自测,先生成二维码图片在C:/createQrcode盘符下
CreateQrImage.createBaseQrcodeImage("java生成二维码", "二维码", "C:/createQrcode");
//使用线程等待10s后,再将生成的二维码图片删除
try{
Thread.sleep(20000);//等待20秒
}catch(Exception e){
e.printStackTrace(System.out);
}
//删除生成的二维码图片
CreateQrImage.baseDeleteImage("二维码", "C:/createQrcode");
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值