生成二维码的代码网上有很多,最近项目需要就实现了一次,在实际操作中也遇到了几个需要注意的问题,记录一下:
1.生成二维码使用的javase-3.0.0.jar和core-3.0.0.jar这两个jar包(当然还有其它的jar包也行,我用的是这个)
这两个jar包对jdk版本有要求:2.3版本需要使用jdk1.7,如果的是jdk1.7以下的,2.2版本是没问题的
本例使用的是3.0的包,jdk版本1.7
这是包的下载地址
https://repo1.maven.org/maven2/com/google/zxing/
1 import java.io.File; 2 import java.io.IOException; 3 import java.io.PrintWriter; 4 import java.nio.file.FileSystems; 5 import java.nio.file.Path; 6 import java.text.SimpleDateFormat; 7 import java.util.Date; 8 import java.util.UUID; 9 10 import com.google.zxing.BarcodeFormat; 11 import com.google.zxing.WriterException; 12 import com.google.zxing.client.j2se.MatrixToImageWriter; 13 import com.google.zxing.common.BitMatrix; 14 import com.google.zxing.qrcode.QRCodeWriter; 15 private static void generateQRCodeImage(String text, int width, int height, String filePath) throws WriterException, IOException { 16 File file=new File("F:\\affix\\QRCode\\"); 17 if(!file.exists()){//如果文件夹不存在 18 //file.mkdir();创建单个文件夹 19 file.mkdirs();//mkdirs创建多级文件夹 20 } 21 UUID uuid = UUID.randomUUID(); 22 String guid=uuid.toString(); 23 String filePath="F:\\affix\\QRCode\\"+guid+".png"; 24 System.out.println("************"+filePath); 25 try { 26 QRCodeWriter qrCodeWriter = new QRCodeWriter(); 27 BitMatrix bitMatrix = qrCodeWriter.encode("二维码内容", BarcodeFormat.QR_CODE, 350, 350); 28 //这个java.nio.file.FileSystems必须在1.7以上才可以 29 Path path = FileSystems.getDefault().getPath(filePath); 30 MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path); 31 } catch (WriterException e) { 32 System.out.println("未能正常生成二维码,WriterException :: " + e.getMessage()); 33 } catch (IOException e) { 34 System.out.println("未能正常生成二维码, IOException :: " + e.getMessage()); 35 } 36 } 37 38 public static void main(String[] args) { 39 try { 40 String QR_CODE_IMAGE_PATH = "d:\xxx"; 41 generateQRCodeImage("This is my first QR Code", 350, 350, "QR_CODE_IMAGE_PATH"); 42 } catch (WriterException e) { 43 System.out.println("Could not generate QR Code, WriterException :: " + e.getMessage()); 44 } catch (IOException e) { 45 System.out.println("Could not generate QR Code, IOException :: " + e.getMessage()); 46 } 47 48 }