生成二維碼的代碼網上有很多,最近項目需要就實現了一次,在實際操作中也遇到了幾個需要注意的問題,記錄一下:
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 }