JAVA生成二維碼並轉化為二進制在頁面展示


引用jar包:

zxing的core包,下載路徑可參考:http://download.csdn.net/detail/sxg0205/9461106


java代碼:

引用包:

import java.awt.image.BufferedImage;

import java.io.ByteArrayOutputStream;

import java.io.IOException;
import java.util.Hashtable;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import sun.misc.BASE64Encoder;  


方法:

/**
* 二維碼生成器

* @param text 二維碼內容
* @throws IOException 
*/
    @SuppressWarnings({ "unchecked", "rawtypes", "restriction" })
public static String generalQRCode(String url) {   
        Hashtable hints= new Hashtable();   
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");   
        String binary = null;
        
try {
BitMatrix bitMatrix = new MultiFormatWriter().encode(
url, BarcodeFormat.QR_CODE, 200, 200, hints);

// 實現一: 輸出圖片到指定目錄
// File outputFile = new File("d://1.jpg");
//        MatrixToImageWriter.writeToFile(bitMatrix, "png", outputFile);

// 實現二:生成二維碼圖片並將圖片轉為二進制傳遞給前台
// 1、讀取文件轉換為字節數組
ByteArrayOutputStream out = new ByteArrayOutputStream();
BufferedImage image = toBufferedImage(bitMatrix);
////
ImageIO.write(image, "png", out);
byte[] bytes = out.toByteArray();

// 2、將字節數組轉為二進制
BASE64Encoder encoder = new BASE64Encoder(); 
binary = encoder.encodeBuffer(bytes).trim(); 

} catch (Exception e) {
e.printStackTrace();


return binary;
    }   


// 其他調用方法

    public static BufferedImage toBufferedImage(BitMatrix matrix) {
        int width = matrix.getWidth();
        int height = matrix.getHeight();
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        for (int x = 0; x < width; x++) {
          for (int y = 0; y < height; y++) {
            image.setRGB(x, y, matrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
          }
        }
        
        return image;
      }

前台ajax方法:

$.ajax({
url: 方法url,
type:'post',
success : function(data) {
$('#img').attr('src', 'data:image/jpg;base64,' + data);
}
});


注意:img 的src前面需要拼接data:image/jpg;base64, 在加上后台生成的二進制才能正確解析二進制



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM