zoukankan      html  css  js  c++  java
  • java 生成二维码

    这里主要使用Google的zxing架包。

    <dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.2.1</version>
    </dependency>
    

    注意:2.1版本后需要jdk1.7支持,  2.1及以前支持jdk1.6

    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("
    
    You have successfully created QR Code.");
    	}
    }
    

    生成:

  • 相关阅读:
    poj2886 Who Gets the Most Candies?
    poj1201 Intervals
    poj3109 Inner Vertices
    poj1990 MooFest
    poj3368 Frequent values
    NOIP练习赛题目6
    NOIP练习赛题目5
    NOIP练习赛题目4
    NOIP练习赛题目3
    NOIP练习赛题目2
  • 原文地址:https://www.cnblogs.com/uu5666/p/7459611.html
Copyright © 2011-2022 走看看