生成二維碼並直接上傳到七牛上

package com.casic.util;
import com.casic.anfangyun.expo.model.ExpoApply;
import com.casic.anfangyun.expo.model.ExpoAudienceRegister;
import com.google.gson.Gson;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;


import javax.imageio.ImageIO;


import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.io.IOException;
import java.io.InputStream;
import java.awt.image.BufferedImage;
/**生成二維碼*/
public class QRCode {
private static final int BLACK = 0xFF000000;
private static final int WHITE = 0xFFFFFFFF;


private QRCode() {
}


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) ? BLACK : WHITE);
}
}
return image;
}


public static void writeToFile(BitMatrix matrix, String format, File file) throws IOException {
BufferedImage image = toBufferedImage(matrix);
if (!ImageIO.write(image, format, file)) {
throw new IOException("Could not write an image of format "+ format + " to " + file);
}
}
/**生成二維碼*/
public static String  uploadImg(ExpoAudienceRegister expoAudienceRegister){    //傳入的參數
   Configuration cfg = new Configuration(Zone.zone0());
   //...其他參數參考類註釋
   UploadManager uploadManager = new UploadManager(cfg);
   //...生成上傳憑證,然後準備上傳
   String accessKey = "=========";
   String secretKey = "==========";
   String bucket = ConfigInno.bucket;
   //默認不指定key的情況下,以文件內容的hash值作爲文件名
   String key = null;
   try {   
   Auth auth = Auth.create(accessKey, secretKey);
   String upToken = auth.uploadToken(bucket);
   try {
// 生成二維碼
// String uploadImgUrl = PropertiesUtils.getProperty("uploadImgUrl")+"image/carousel";
// String imgName =System.currentTimeMillis()+".png";
// File outputFile = new File(uploadImgUrl,imgName);
// QRCode.writeToFile(bitMatrix, "png", outputFile);
    MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
Map hints = new HashMap();
// 內容所使用編碼
hints.put(EncodeHintType.CHARACTER_SET, "utf8");
//所傳信息
String QRCodeString=expoAudienceRegister.getId()+"";
if(null != expoAudienceRegister.getFrontuserid() && null != expoAudienceRegister.getBbsmoduleid()){
QRCodeString=expoAudienceRegister.getFrontuserid()+"_"+expoAudienceRegister.getBbsmoduleid();
}
BitMatrix bitMatrix = multiFormatWriter.encode(QRCodeString+"", BarcodeFormat.QR_CODE, 200, 200, hints);
BufferedImage bufferedImage = QRCode.toBufferedImage(bitMatrix);
ByteArrayOutputStream os = new ByteArrayOutputStream();  
ImageIO.write(bufferedImage, "jpg", os);  
InputStream is = new ByteArrayInputStream(os.toByteArray());
       Response response = uploadManager.put(is,key,upToken,null, null);
       //解析上傳成功的結果
       DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
      // System.out.println(putRet.key+"二維碼");
       return putRet.key;
   } catch (QiniuException ex) {
       Response r = ex.response;
       System.err.println(r.toString());
       try {
           System.err.println(r.bodyString());
       } catch (QiniuException ex2) {
       }
   }
   } catch (Exception ex) {
   }
   return "";
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章