用Java编写二维码

用Java编写二维码,首先会用到qrcode.jar这个jar包,需要的话的话,可以下载,这是地址:http://pan.baidu.com/s/1slFDVjR

我来解释一下生成二维码的步骤:

(1)new出一个绘制工具Graphics

(2)设置二维码的背景色,设置成白色,在设置前景色,设置成黑色

(3)定义二维码的绘制区域,调用Graphics的clearRect方法

(4)然后把要输入的内容转换为byte数组

(5)最重要的一步,定义一个boolean的二维数组,如果这个位置是真的,就涂成黑色

(6)最后再把这个生成的二维码以图片的形式保存在制定的路径即可。

以下是所有的代码:

package com.cal.util;

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

import javax.imageio.ImageIO;

import com.swetake.util.Qrcode;

public class QrcodeUtil {
	//方法,属性,代码块
	//定义一个生成二维码的方法
	public static void QrcodeImg(String context,String imgPath){
		//实例化一个Qrcode
		Qrcode qrcode = new Qrcode();
		
		//拍错率15%
		qrcode.setQrcodeErrorCorrect('M');
		
		//版本
		qrcode.setQrcodeVersion(7);
		
		//编码
		qrcode.setQrcodeEncodeMode('B');
		
		//
		int width = 140;
		int height = 140;
		BufferedImage bufferImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		
		//绘制工具
		Graphics2D gs = bufferImage.createGraphics();
	
		//设置二维码的背景色
		gs.setBackground(Color.white);
		
		//前景色
		gs.setColor(Color.black);
		
		//定义二维码的绘制区域
		gs.clearRect(0, 0, width, height);
		
		try {
			byte[] contentBytes = context.getBytes("utf-8");
			boolean[][] codeOut = qrcode.calQrcode(contentBytes);
			for(int i=0;i<codeOut.length;i++){
				for(int j=0;j<codeOut.length;j++){
					if(codeOut[j][i]){
						//如果在这个位置是真的,就涂成黑色
						gs.fillRect(j*3+2, i*3+2, 3, 3);
					}
				}
			}
			gs.dispose();
			
			File imgFile = new File(imgPath);
			try {
				ImageIO.write(bufferImage, "png", imgFile);
				System.out.println("二维码生成成功!!!");
			} catch (IOException e) {
				e.printStackTrace();
			}
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		QrcodeImg("伍金凡", "c:/myclass/lan.png");
	}
}


  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java中的ZXing库来生成二维码,并且使用Java打印API来打印二维码。下面是一个简单的示例代码,可以生成一个包含文本信息的二维码并打印出来: ```java import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import javax.print.PrintService; import javax.print.PrintServiceLookup; import javax.print.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.PrintRequestAttributeSet; import javax.print.attribute.standard.MediaSizeName; import javax.print.attribute.standard.OrientationRequested; import com.google.zxing.BarcodeFormat; import com.google.zxing.MultiFormatWriter; import com.google.zxing.common.BitMatrix; public class QRCodePrinter { public static void main(String[] args) throws Exception { // Generate QR code String text = "Hello, world!"; int width = 200; int height = 200; String fileType = "png"; File qrFile = new File("qrcode.png"); BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height); BufferedImage qrImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); qrImage.createGraphics().drawImage(toBufferedImage(bitMatrix), 0, 0, null); ImageIO.write(qrImage, fileType, qrFile); // Print QR code PrintService printService = PrintServiceLookup.lookupDefaultPrintService(); PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet(); printRequestAttributeSet.add(MediaSizeName.ISO_A4); printRequestAttributeSet.add(OrientationRequested.PORTRAIT); BufferedImage printImage = new BufferedImage(qrImage.getWidth(), qrImage.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D g2d = printImage.createGraphics(); g2d.drawImage(qrImage, 0, 0, null); g2d.dispose(); printService.createPrintJob().print(printImage, printRequestAttributeSet); } private 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) ? 0xFF000000 : 0xFFFFFFFF); } } return image; } } ``` 这个示例代码使用了ZXing库来生成二维码,并使用Java打印API来打印二维码。在运行这个代码之前,需要将ZXing库添加到你的项目中。可以在这里下载ZXing库:https://github.com/zxing/zxing。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值