生成二維碼之後,給二維碼 上方新增文字(二)
阿新 • • 發佈:2018-12-25
生完二維碼之後,獲取因為需求 我們需要 給二位嗎上方新增 一些文字之類的提示資訊: 如果 座位號什麼的;
int fontStyle = 1; //字型風格 int font = 24; //字型大小 //用來存放帶有logo+文字的二維碼圖片 String realPath2 = url+"/new/"+shopName+"/"; String newImageWithText = realPath2+state+code+"newImg.jpg";//組合生成 File files = new File(newImageWithText);//組合生成 if (!files.getParentFile().exists()) files.getParentFile().mkdirs(); System.out.println(newImageWithText); //帶有logo的二維碼圖片 String targetImage = path;//組合生成 String text = "桌號: "+state+"-"+ code;//傳參 //在二維碼下方新增文字(文字居中) pressText(text, newImageWithText, targetImage, fontStyle, Color.decode("#2d667a"), font) ;
呼叫 pressText()
public static void pressText(String pressText, String newImg, String targetImg, int fontStyle, Color color, int fontSize) { //計算文字開始的位置 //x開始的位置:(圖片寬度-字型大小*字的個數)/2 int startX = (WIDTH-(fontSize*pressText.length()))/2 +30; //y開始的位置:圖片高度-(圖片高度-圖片寬度)/2 int startY = HEIGHT-(HEIGHT-WIDTH)/2 - 270; try { File file = new File(targetImg); Image src = ImageIO.read(file); int imageW = src.getWidth(null); int imageH = src.getHeight(null); BufferedImage image = new BufferedImage(imageW, 350, BufferedImage.TYPE_INT_ARGB);//TYPE_INT_ARGB 背景為透明的 Graphics g = image.createGraphics(); g.drawImage(src, 0, imageH-210, imageW, imageH, null); g.setColor(color); g.setFont(new Font(null, fontStyle, fontSize)); g.drawString(pressText, startX, startY); g.dispose(); FileOutputStream out = new FileOutputStream(newImg); ImageIO.write(image, "JPEG", out); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(image); out.close(); System.out.println("image press success"); } catch (Exception e) { System.out.println(e); }
這樣就將文字和二維碼 組合在一起了,至於 放在那裡,修改
int startX = (WIDTH-(fontSize*pressText.length()))/2 +30;
//y開始的位置:圖片高度-(圖片高度-圖片寬度)/2
int startY = HEIGHT-(HEIGHT-WIDTH)/2 - 270;
g.drawImage(src, 0, imageH-210, imageW, imageH, null);
就好了