最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年09月30日 16:58:14   投稿:daisy  
二維碼在我們現(xiàn)在的生活中可謂是隨處可見,這篇文章主要是介紹如何利用Java生成帶有文字的二維碼,對大家學(xué)習(xí)Java具有一定的參考借鑒價值。有需要的朋友們下面來一起看看吧。

介紹

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

第一步、maven導(dǎo)入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 掃描二維碼的內(nèi)容
 * @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();
 //設(shè)置UTF-8, 防止中文亂碼
 hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
 //設(shè)置二維碼四周白色區(qū)域的大小
 hints.put(EncodeHintType.MARGIN,1);
 //設(shè)置二維碼的容錯性
 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);
 //設(shè)置畫筆的顏色
 g.setColor(color);
 //設(shè)置字體
 Font font = new Font("宋體", fontStyle, fontSize);
 FontMetrics metrics = g.getFontMetrics(font);
 //文字在圖片中的坐標(biāo) 這里設(shè)置在中間
 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);
}

總結(jié)

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

相關(guān)文章

  • java正則替換img標(biāo)簽中src值的方法

    java正則替換img標(biāo)簽中src值的方法

    今天小編就為大家分享一篇java正則替換img標(biāo)簽中src值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 基于Java編寫emoji表情處理工具類

    基于Java編寫emoji表情處理工具類

    這篇文章主要為大家詳細(xì)介紹了如何基于Java編寫一個emoji表情處理工具類,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • SpringBoot整合Mail輕松實現(xiàn)郵件自動推送功能

    SpringBoot整合Mail輕松實現(xiàn)郵件自動推送功能

    在項目中經(jīng)常會遇到SpringBoot推送消息的業(yè)務(wù),除了站內(nèi)推送通知,郵件推送也是一種常見的方式,本文小編就給大家介紹了SpringBoot整合Mail輕松實現(xiàn)郵件自動推送功能,需要的朋友可以參考下
    2024-12-12
  • idea導(dǎo)入jar包的詳細(xì)圖文教程

    idea導(dǎo)入jar包的詳細(xì)圖文教程

    這篇文章主要給大家介紹了關(guān)于idea導(dǎo)入jar包的詳細(xì)圖文教程,文中通過圖文將導(dǎo)入的步驟介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-03-03
  • 基于JDK動態(tài)代理原理解析

    基于JDK動態(tài)代理原理解析

    這篇文章主要介紹了基于JDK動態(tài)代理原理解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 淺談JAVASE單例設(shè)計模式

    淺談JAVASE單例設(shè)計模式

    整理筆記的時候發(fā)現(xiàn)以前寫的單利設(shè)計模式的文章,貼出來給大家分享下!有需要的小伙伴可以來參考下
    2015-11-11
  • Springboot2整合knife4j過程解析

    Springboot2整合knife4j過程解析

    這篇文章主要介紹了Springboot2整合knife4j過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Mybatis使用@param注解四種情況解析

    Mybatis使用@param注解四種情況解析

    這篇文章主要介紹了Mybatis使用@param注解四種情況解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • jdk8的datetime時間函數(shù)使用示例

    jdk8的datetime時間函數(shù)使用示例

    這篇文章主要介紹了jdk8的datetime時間函數(shù)使用示例,需要的朋友可以參考下
    2014-03-03
  • 關(guān)于Java8中map()和flatMap()的一些事

    關(guān)于Java8中map()和flatMap()的一些事

    這篇文章主要給大家介紹了關(guān)于Java8中map()和flatMap()的一些事,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評論

阿拉尔市| 永寿县| 江西省| 梨树县| 沾化县| 甘孜县| 沐川县| 郓城县| 多伦县| 两当县| 陵水| 星座| 喜德县| 秭归县| 开化县| 任丘市| 理塘县| 天台县| 那曲县| 大丰市| 安多县| 湖州市| 商洛市| 绥芬河市| 凌云县| 卓资县| 仁怀市| 巴彦淖尔市| 成都市| 广平县| 肥东县| 毕节市| 新和县| 满洲里市| 临高县| 丰原市| 云安县| 阜城县| 孟津县| 新田县| 贵定县|