標籤:++ src doc main ext fill jpg date static
這裡主要使用Google的zxing架包。
<dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.2.1</version></dependency>
注意:2.1版本後需要jdk1.7支援
API:
package crunchify.com.tutorial; import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.EnumMap;import java.util.Map; import javax.imageio.ImageIO; import com.google.zxing.BarcodeFormat;import com.google.zxing.EncodeHintType;import com.google.zxing.WriterException;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.QRCodeWriter;import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; /** * @author Crunchify.com * Updated: 03/20/2016 - added code to narrow border size */ public class CrunchifyQRCode { // Tutorial: http://zxing.github.io/zxing/apidocs/index.html public static void main(String[] args) {String myCodeText = "http://crunchify.com/";String filePath = "/Users/appshah/Documents/CrunchifyQR.png";int size = 250;String fileType = "png";File myFile = new File(filePath);try {Map<EncodeHintType, Object> hintMap = new EnumMap<EncodeHintType, Object>(EncodeHintType.class);hintMap.put(EncodeHintType.CHARACTER_SET, "UTF-8");// Now with zxing version 3.2.1 you could change border size (white border size to just 1)hintMap.put(EncodeHintType.MARGIN, 1); /* default = 4 */hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L); QRCodeWriter qrCodeWriter = new QRCodeWriter();BitMatrix byteMatrix = qrCodeWriter.encode(myCodeText, BarcodeFormat.QR_CODE, size,size, hintMap);int CrunchifyWidth = byteMatrix.getWidth();BufferedImage image = new BufferedImage(CrunchifyWidth, CrunchifyWidth,BufferedImage.TYPE_INT_RGB);image.createGraphics(); Graphics2D graphics = (Graphics2D) image.getGraphics();graphics.setColor(Color.WHITE);graphics.fillRect(0, 0, CrunchifyWidth, CrunchifyWidth);graphics.setColor(Color.BLACK); for (int i = 0; i < CrunchifyWidth; i++) {for (int j = 0; j < CrunchifyWidth; j++) {if (byteMatrix.get(i, j)) {graphics.fillRect(i, j, 1, 1);}}}ImageIO.write(image, fileType, myFile);} catch (WriterException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}System.out.println("\n\nYou have successfully created QR Code.");}}
產生:
java 產生二維碼