一. 通过使用zxing方式实现: jar准备: https://github.com/zxing/zxing 下载源代码,将core/src/main/java/下的所有文件和javase/src/main/java/下的所有文件一起打成jar文件zxing.jar
创建二维码:
@SupPRessWarnings({"rawtypes", "unchecked"}) private static void createZxing() throws WriterException, IOException { int width=300; int hight=300; String format="png"; String content="www.baidu.com"; HashMap hints=new HashMap(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);//纠错等级L,M,Q,H hints.put(EncodeHintType.MARGIN, 2); //边距 BitMatrix bitMatrix=new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, hight, hints); Path file=new File("D:/download/imag.png").toPath(); MatrixToImageWriter.writeToPath(bitMatrix, format, file); }12345678910111213141234567891011121314读取二维码:
private static void readZxing() throws IOException, NotFoundException { MultiFormatReader read = new MultiFormatReader(); File file=new File("D:/download/imag.png"); BufferedImage image=ImageIO.read(file); Binarizer binarizer=new HybridBinarizer(new BufferedImageLuminanceSource(image)); BinaryBitmap binaryBitmap=new BinaryBitmap(binarizer); Result res=read.decode(binaryBitmap); System.out.println(res.toString()); System.out.println(res.getBarcodeFormat()); System.out.println(res.getText()); }12345678910111234567891011二. 使用QRCode方式实现二维码
jar包准备:Qrcode_A.jar,qrcode_B.jar 创建二维码:
private static void createORcode() throws UnsupportedEncodingException, IOException { Qrcode qrcode=new Qrcode(); qrcode.setQrcodeErrorCorrect('M'); //纠错等级L M Q H qrcode.setQrcodeEncodeMode('B'); //N:数字,A:a-Z ,B:其他字符 int version = 7; qrcode.setQrcodeVersion(version); String qrData="www.baidu.com"; byte data[]=qrData.getBytes("gb2312"); int width = 67+12*(version-1); int hight=67+12*(version-1); BufferedImage bufferedImage=new BufferedImage(width, hight, BufferedImage.TYPE_INT_RGB); Graphics2D graphics2d=bufferedImage.createGraphics(); graphics2d.setBackground(Color.white); graphics2d.setColor(Color.black); graphics2d.clearRect(0, 0, width, hight); int pixoff=2; //偏移量 if (data.length>0 && data.length<120) { boolean[][] s=qrcode.calQrcode(data); for (int i = 0; i < s.length; i++) { for (int j = 0; j < s.length; j++) { if (s[j][i]) { graphics2d.fillRect(j*3+pixoff, i*3+pixoff, 3, 3); } } } } graphics2d.dispose(); bufferedImage.flush(); ImageIO.write(bufferedImage, "png", new File("D:/download/imag.png")); }123456789101112131415161718192021222324252627282930123456789101112131415161718192021222324252627282930读取二维码:两种方式:1.上诉readZxing()的方式,2.如下
private static void readQRcode() throws IOException, NotFoundException { File file=new File("D:/download/imag.png"); BufferedImage bufferedImage=ImageIO.read(file); QRCodeDecoder codeDecoder=new QRCodeDecoder(); String res=new String(codeDecoder.decode(new MyQRCodeImage(bufferedImage)),"gb2312"); System.out.println(res); }12345671234567三. 使用js插件实现二维码
js文件准备:jQuery.min.js,jquery.qrcode.min.js 导入js文件,然后编写如下代码,访问该页面。
<div id="qrcode"></div> <script type="text/Javascript"> $("#qrcode").qrcode("www.baidu.com"); </script>新闻热点
疑难解答