天天看點

二維碼工具類

import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sun.font.FontDesignMetrics; import javax.imageio.ImageIO; import javax.swing.; import java.awt.; import java.awt.image.BufferedImage; import java.io.*; import java.util.HashMap; import java.util.Map; public class QrCodeUtil { private static final Logger logger = LoggerFactory.getLogger(QrCodeUtil.class);

// int startX = (width - (fontSize * secoundTitle.length())) / 100; //y開始的位置:圖檔高度-(圖檔高度-圖檔寬度)/2 int startY = height - (height - width) / 3; InputStream input=null; Font font = new Font("微軟雅黑", fontStyle,fontSize); ByteArrayInputStream resultInputStream = null; try { input=ConvertUtil.parse(out); input.mark(0); Image src = ImageIO.read(input); int imageW = src.getWidth(null); int imageH = src.getHeight(null); BufferedImage image = new BufferedImage(imageW, imageH, BufferedImage.TYPE_INT_RGB); Graphics g = image.createGraphics(); g.setColor(color); g.setFont(new Font(null, fontStyle, fontSize)); g.drawImage(src, 0, 0, imageW, imageH, null); int wordWidth = getWordWidth(font, firstTitle); g.drawString(firstTitle,(width-wordWidth)/2,40); drawString(g,font,secoundTitle,(width-wordWidth)/2, startY,180); g.dispose(); out=new ByteArrayOutputStream(); ImageIO.write(image, "jpg", out); resultInputStream =ConvertUtil.parse(out); logger.info("image press success"); } catch (Exception e) { logger.info("系統異常,異常資訊為:"+e.getMessage()); }finally { if (input!=null){ input.close(); } if(out != null){ out.close(); } } return resultInputStream; }

}