说到二维码,现在真是已经到处都是了,那么,什么是二维码?在Java中如何生成呢?
二维码 ,又称“二维条码”, 二维条形码最早发明于日本,它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动 识别功能、及处理图形旋转变化等特点。
Java语言的话生成二维码有很多开发的jar包,如ZXing,QRCode,前者是谷歌开发的后者则是小日本开发的,这里的话我使用ZXing-2.2的开发包来弄 。
一、先下载ZXing开发包,这里用到的只是core那个jar包
ZXing-2.2.jar开发包下载(密码:5S5P)
二、编写一个工具类,用于生成二维码
package com.csyor.test.zxing; import javax.imageio.ImageIO; import com.google.zxing.common.BitMatrix; 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); } System.out.println("二维码图片生成成功"); } 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.csyor.test.zxing; import java.io.File; import java.util.Hashtable; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.common.BitMatrix; public class TestZxing { public static void main(String[] args) throws Exception { String text = "https://www.csyor.com"; int width = 250; int height = 250; // 二维码的图片格式 String format = "gif"; Hashtable<EncodeHintType,String> hints = new Hashtable<EncodeHintType,String>(); // 内容所使用编码 hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); BitMatrix bitMatrix = new MultiFormatWriter() .encode(text, BarcodeFormat.QR_CODE, width, height, hints); // 生成二维码 File outputFile = new File("d:" + File.separator + "csyor.com.gif"); MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile); } }
以上内容来自于网络,如有侵权联系即删除。
猜你喜欢
发表评论
电子邮件地址不会被公开。 必填项已用*标注
评论信息
小歪仔 2014-05-19 11:29
真的很好用呀~找了好久~thanks~ :razz: