攜帶logo的二維碼圖片

package com.gipson.ocs.test;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;

public class QRCode {
	public Boolean createQRCode(String content, String imgPath, String logoPath) {
		try {
			Qrcode qrcodeHandler = new Qrcode();
			qrcodeHandler.setQrcodeErrorCorrect('H');// 設置二維碼排錯率,可選L(7%)、M(15%)、Q(25%)、H(30%),排錯率越高可存儲的信息越少,但對二維碼清晰度的要求越小
			qrcodeHandler.setQrcodeEncodeMode('B');// N代表數字,A代表字符a-Z,B代表其他字符
			qrcodeHandler.setQrcodeVersion(9);// 設置設置二維碼版本,取值範圍1-40,值越大尺寸越大,可存儲的信息越大
			byte[] contentBytes = content.getBytes("utf-8");// 設置編碼格式爲UTF-8
			BufferedImage bufImg = new BufferedImage(110, 110,
					BufferedImage.TYPE_INT_RGB);
			Graphics2D gs = bufImg.createGraphics();
			gs.setBackground(Color.white); // 設置背景色爲白色
			gs.clearRect(0, 0, 110, 110);
			gs.setColor(Color.BLACK); // 設定圖像顏色 爲黑色
			int pixoff = 2; // 設置偏移量 不設置可能導致解析出錯
							// 輸出內容 > 二維碼
			if (contentBytes.length > 0 && contentBytes.length < 150) {
				boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);
				for (int i = 0; i < codeOut.length; i++) {
					for (int j = 0; j < codeOut.length; j++) {
						if (codeOut[j][i]) {
							gs.fillRect(j * 2 + pixoff, i * 2 + pixoff, 2, 2);
						}
					}
				}
			} else {
				return false;
			}
			Image img = ImageIO.read(new File(logoPath)); // 實例化一個Image對象。
			gs.drawImage(img, 40, 40, 30, 30, null); // 60,60是距離gs兩個邊的距離,45,45是中間logo的大小
			gs.dispose();
			bufImg.flush();
			File imgFile = new File(imgPath);
			ImageIO.write(bufImg, "png", imgFile);

		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}

	public static void main(String[] args) {
		String imgPath = "C:/Users/xsyuan/Desktop/photo/xsyxin3.jpg";// 最後生成的圖片地址
		String imgPath1 = "C:/Users/xsyuan/Desktop/photo/xsy2.jpg";// 加入的logo照片
		String content = "Dept:IT\nName:xsy\nPhone:17666668888";
		QRCode er = new QRCode();
		boolean boo = er.createQRCode(content, imgPath, imgPath1);
		System.out.println(boo);
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章