欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVA實(shí)現(xiàn)二維碼生成加背景圖代碼實(shí)例

 更新時(shí)間:2019年12月24日 09:14:46   作者:King-D  
這篇文章主要介紹了JAVA實(shí)現(xiàn)二維碼生成加背景圖代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了JAVA實(shí)現(xiàn)二維碼生成加背景圖代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

pom.xml依賴

<!-- 二維碼生成 -->
    <!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
    <dependency>
      <groupId>com.google.zxing</groupId>
      <artifactId>core</artifactId>
      <version>3.0.1</version>
    </dependency>
/**
 * 類名稱:QRCodeMax 
 * 類描述:生成二維碼圖片+背景+文字描述工具類
 * 創(chuàng)建人:一個(gè)除了帥氣,一無是處的男人
 * 創(chuàng)建時(shí)間:2018年12月x日x點(diǎn)x分x秒
 * 修改時(shí)間:2019年2月x日x點(diǎn)x分x秒
 * 修改備注:更新有參數(shù)構(gòu)造
 * @version: 2.0
 *
 */
public class QRCodeMax {
  
 
  //文字顯示
  private static final int QRCOLOR = 0x201f1f; // 二維碼顏色:黑色
  private static final int BGWHITE = 0xFFFFFF; //二維碼背景顏色:白色
 
  // 設(shè)置QR二維碼參數(shù)信息
  private static Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>() {
    private static final long serialVersionUID = 1L;
    {
      put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);// 設(shè)置QR二維碼的糾錯(cuò)級(jí)別(H為最高級(jí)別)
      put(EncodeHintType.CHARACTER_SET, "utf-8");// 設(shè)置編碼方式
      put(EncodeHintType.MARGIN, 0);// 白邊
    }
  };
 
    /**
    * 生成二維碼圖片+背景+文字描述
    * @param codeFile 生成圖地址
    * @param bgImgFile 背景圖地址
    * @param WIDTH 二維碼寬度
    * @param HEIGHT 二維碼高度
    * @param qrUrl 二維碼識(shí)別地址
    * @param note 文字描述1
    * @param tui  文字描述2
    * @param size 文字大小
    * @param imagesX 二維碼x軸方向
    * @param imagesY 二維碼y軸方向
    * @param text1X 文字描述1x軸方向
    * @param text1Y 文字描述1y軸方向
    * @param text2X 文字描述2x軸方向
    * @param text2Y 文字描述2y軸方向
    */
    public static void CreatQRCode( File codeFile, File bgImgFile,Integer WIDTH,Integer HEIGHT,String qrUrl,
        String note,String tui,Integer size,Integer imagesX,Integer imagesY,Integer text1X,Integer text1Y
        ,Integer text2X,Integer text2Y) {
      try {
        MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
        // 參數(shù)順序分別為: 編碼內(nèi)容,編碼類型,生成圖片寬度,生成圖片高度,設(shè)置參數(shù)
        BitMatrix bm = multiFormatWriter.encode(qrUrl, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);
        BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
 
        // 開始利用二維碼數(shù)據(jù)創(chuàng)建Bitmap圖片,分別設(shè)為黑(0xFFFFFFFF) 白(0xFF000000)兩色
        for (int x = 0; x < WIDTH; x++) {
          for (int y = 0; y < HEIGHT; y++) {
            image.setRGB(x, y, bm.get(x, y) ? QRCOLOR : BGWHITE);
          }
        }
        
        /*
         *   添加背景圖片
         */
        BufferedImage backgroundImage = ImageIO.read(bgImgFile);
        int bgWidth=backgroundImage.getWidth();
        int qrWidth=image.getWidth();
        //距離背景圖片x邊的距離,居中顯示
        int disx=(bgWidth-qrWidth)-imagesX;
        //距離y邊距離 * * * *
        int disy=imagesY;
        Graphics2D rng=backgroundImage.createGraphics();
        rng.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP));
        rng.drawImage(image,disx,disy,WIDTH,HEIGHT,null);
 
        /*
         *   文字描述參數(shù)設(shè)置
         */
        
        Color textColor=Color.white;
        rng.setColor(textColor);
        rng.drawImage(backgroundImage,0,0,null);
        //設(shè)置字體類型和大小(BOLD加粗/ PLAIN平常)
        rng.setFont(new Font("微軟雅黑,Arial",Font.BOLD,size));
        //設(shè)置字體顏色
        rng.setColor(Color.black);
        int strWidth=rng.getFontMetrics().stringWidth(note);
        
        //文字1顯示位置
        int disx1=(bgWidth-strWidth)-text1X;//左右
        rng.drawString(note,disx1,text1Y);//上下
        
        //文字2顯示位置
        int disx2=(bgWidth-strWidth)-text2X;//左右
        rng.drawString(tui,disx2,text2Y);//上下
        
        rng.dispose();
        image=backgroundImage;
        image.flush();
        ImageIO.write(image, "png", codeFile);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    
    /**
     * 測(cè)試
     * @param args
     */
    public static void main(String[] args) {
      File bgImgFile=new File("D://tu/bg.png");//背景圖片
      File QrCodeFile = new File("D://tu/myqrcode.png");//生成圖片位置
      String url = "https://blog.csdn.net/weixin_38407595";//二維碼鏈接
      String note = "" ;//文字描述
      String tui = "" ;//文字描述
      
      
      //宣傳二維碼生成
      //生成圖地址,背景圖地址,二維碼寬度,二維碼高度,二維碼識(shí)別地址,文字描述1,文字描述2,文字大小,圖片x軸方向,圖片y軸方向,文字1||2xy軸方向
      CreatQRCode(QrCodeFile,bgImgFile, 148, 148, url, note,tui, 38, 408, 123, 0, 0, 410, 210);
 
    }
}

效果

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot 整合Jest實(shí)例代碼講解

    SpringBoot 整合Jest實(shí)例代碼講解

    本文通過實(shí)例代碼給大家介紹了SpringBoot 整合Jest的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • SpringBoot整合ip2region獲取客戶端IP地理位置信息

    SpringBoot整合ip2region獲取客戶端IP地理位置信息

    在我們?nèi)粘EB開發(fā)工作中,經(jīng)常會(huì)有需要獲取客戶端地理位置的需求,本文主要介紹了SpringBoot整合ip2region獲取客戶端IP地理位置信息,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • 一文詳解Java如何系統(tǒng)地避免空指針問題

    一文詳解Java如何系統(tǒng)地避免空指針問題

    新手Java開發(fā)總是經(jīng)??罩羔槞z查,甚至某些老手也會(huì)犯這樣的問題,所以這篇文章小編就帶大家一起來看看如何系統(tǒng)地避免空指針問題,希望對(duì)大家有所幫助
    2024-01-01
  • Java利用FileUtils讀取數(shù)據(jù)和寫入數(shù)據(jù)到文件

    Java利用FileUtils讀取數(shù)據(jù)和寫入數(shù)據(jù)到文件

    這篇文章主要介紹了Java利用FileUtils讀取數(shù)據(jù)和寫入數(shù)據(jù)到文件,下面文章圍繞FileUtils的相關(guān)資料展開怎么讀取數(shù)據(jù)和寫入數(shù)據(jù)到文件的內(nèi)容,具有一定的參考價(jià)值,徐婭奧德小伙伴可以參考一下
    2021-12-12
  • Java 基礎(chǔ)語法之解析 Java 的包和繼承

    Java 基礎(chǔ)語法之解析 Java 的包和繼承

    包是組織類的一種方式,繼承顧名思義,比如誰繼承了長輩的產(chǎn)業(yè),其實(shí)這里的繼承和我們生活中的繼承很類似,下面文字將為大家詳細(xì)介紹Java的包和繼承
    2021-09-09
  • Java使用Hutool執(zhí)行日期的加法和減法操作方法

    Java使用Hutool執(zhí)行日期的加法和減法操作方法

    使用Hutool進(jìn)行日期的加法和減法操作,可以使用`DateUtil.offsetXXX()`方法來實(shí)現(xiàn),這些方法會(huì)返回一個(gè)新的日期,而不是在原日期上進(jìn)行修改,本文給大家介紹Java使用Hutool執(zhí)行日期的加法和減法操作方法,感興趣的朋友一起看看吧
    2023-11-11
  • SpringBoot整合HikariCP數(shù)據(jù)庫連接池方式

    SpringBoot整合HikariCP數(shù)據(jù)庫連接池方式

    這篇文章主要介紹了SpringBoot整合HikariCP數(shù)據(jù)庫連接池方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • SpringBoot業(yè)務(wù)邏輯異常的處理方法介紹

    SpringBoot業(yè)務(wù)邏輯異常的處理方法介紹

    本篇文章為大家展示了如何在SpringBoot中統(tǒng)一處理邏輯異常,內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲
    2022-09-09
  • 關(guān)于springboot忽略接口,參數(shù)注解的使用ApiIgnore

    關(guān)于springboot忽略接口,參數(shù)注解的使用ApiIgnore

    這篇文章主要介紹了關(guān)于springboot忽略接口,參數(shù)注解的使用ApiIgnore,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 深入解析Spring?Boot?的SPI機(jī)制詳情

    深入解析Spring?Boot?的SPI機(jī)制詳情

    這篇文章主要介紹了深入解析Spring?Boot的SPI機(jī)制詳情,SPI是JDK內(nèi)置的一種服務(wù)提供發(fā)現(xiàn)機(jī)制,可以用來啟用框架擴(kuò)展和替換組件,主要用于框架中開發(fā),更多相關(guān)介紹,感興趣的小伙伴可以參考一下下面文章內(nèi)容
    2022-08-08

最新評(píng)論