国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

利用Java生成帶有文字的二維碼

2019-11-26 13:45:56
字體:
來源:轉載
供稿:網友

介紹

主要使用了goole的zxing包,下面給出了示例代碼,很方便大家的理解和學習,代碼都屬于初步框架,功能有了,需要根據實際使用情況完善優化。

第一步、maven導入zxing

<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.2.1</version></dependency>

第二步、開始生成二維碼:

private static final int BLACK = 0xFF000000;private static final int WHITE = 0xFFFFFFFF;/** * 把生成的二維碼存入到圖片中 * @param matrix zxing包下的二維碼類 * @return */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;}/** * 生成二維碼并寫入文件 * @param content 掃描二維碼的內容 * @param format 圖片格式 jpg * @param file  文件 * @throws Exception */public static void writeToFile(String content, String format, File file)  throws Exception { MultiFormatWriter multiFormatWriter = new MultiFormatWriter(); @SuppressWarnings("rawtypes") Map hints = new HashMap(); //設置UTF-8, 防止中文亂碼 hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); //設置二維碼四周白色區域的大小 hints.put(EncodeHintType.MARGIN,1); //設置二維碼的容錯性 hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); //畫二維碼 BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints); BufferedImage image = toBufferedImage(bitMatrix); if (!ImageIO.write(image, format, file)) {  throw new IOException("Could not write an image of format " + format + " to " + file); }}

第三步、把文字寫入二維碼圖片中:

/** * 給二維碼圖片加上文字 * @param pressText 文字 * @param qrFile  二維碼文件 * @param fontStyle * @param color * @param fontSize */public static void pressText(String pressText, File qrFile, int fontStyle, Color color, int fontSize) throws Exception { pressText = new String(pressText.getBytes(), "utf-8"); Image src = ImageIO.read(qrFile); 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.drawImage(src, 0, 0, imageW, imageH, null); //設置畫筆的顏色 g.setColor(color); //設置字體 Font font = new Font("宋體", fontStyle, fontSize); FontMetrics metrics = g.getFontMetrics(font); //文字在圖片中的坐標 這里設置在中間 int startX = (WIDTH - metrics.stringWidth(pressText)) / 2; int startY = HEIGHT/2; g.setFont(font); g.drawString(pressText, startX, startY); g.dispose(); FileOutputStream out = new FileOutputStream(qrFile); ImageIO.write(image, "JPEG", out); out.close(); System.out.println("image press success");}

第四步、在main方法中測試一下,一個中間帶文字的二維碼就生成了

public static void main(String[] args) throws Exception { File qrcFile = new File("/Users/deweixu/","google.jpg"); writeToFile("www.google.com.hk", "jpg", qrcFile); pressText("谷歌", qrcFile, 5, Color.RED, 32);}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 老河口市| 若羌县| 娄烦县| 丰镇市| 兴城市| 绍兴县| 濮阳县| 旬阳县| 秦皇岛市| 福建省| 淮北市| 屯昌县| 晋城| 阳新县| 和静县| 永胜县| 巍山| 呼玛县| 长岭县| 铁力市| 扎鲁特旗| 望都县| 金沙县| 林州市| 集安市| 绿春县| 济阳县| 原平市| 思南县| 乐亭县| 东源县| 霸州市| 察哈| 双城市| 泌阳县| 咸宁市| 临泉县| 巴林右旗| 临猗县| 利川市| 霍城县|