如何用java代碼生成二維碼,使用java語言完成二維碼的生成

本文目錄一覽:

java 如何完成二維碼的製作

參考以下代碼:

//創建BarcodeSettings實例

BarcodeSettings settings = new BarcodeSettings();

//設置條碼類型為QR二維碼

settings.setType(BarCodeType.QR_Code);       

//設置二維碼數據

settings.setData(“Hello 123456789”);

//設置二維碼顯示數據

settings.setData2D(“Hello 123456789”);     

//設置數據類型

settings.setQRCodeDataMode(QRCodeDataMode.Alpha_Number);

//設置二維碼模型寬度

settings.setX(1.0f);

//設置二維碼糾錯級別

settings.setQRCodeECL(QRCodeECL.H);

//創建BarCodeGenerator實例

BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);

//根據settings生成圖像數據,保存至BufferedImage實例

BufferedImage bufferedImage = barCodeGenerator.generateImage();

//保存為PNG圖片

ImageIO.write(bufferedImage, “png”, new File(“QRCode.png”));

System.out.println(“Complete!”);

需要引用Spire.Barcode for java

原文:Java 生成二維碼

怎麼把一串代碼變成二維碼?

若是通過微信APP操作製作二維碼:

1、打開微信,點擊「發現-小程序」。

2、接着點擊「搜索小程序」。

3、輸入:二維碼生成器,進行搜索,然後點擊第一個二維碼生成器小程序。

4、然後點擊」二維碼「,按照頁面操作,點擊生成二維碼,點擊保存。

溫馨提示:以上內容僅供參考。

應答時間:2021-08-31,最新業務變化請以平安銀行官網公布為準。

[平安銀行我知道]想要知道更多?快來看「平安銀行我知道」吧~

怎麼用java代碼把一個鏈接生成二維碼

參考代碼

import java.io.*;

import java.util.Date;

import java.awt.*;

import java.awt.image.*;

import javax.imageio.*;

public class QRCodeEncoderTest

{

/** Creates a new instance of QRCodeEncoderTest */

public QRCodeEncoderTest()

{

}

public static void create_image(String sms_info)throws Exception{

try{

qrcode testQrcode =new qrcode();

testQrcode.setQrcodeErrorCorrect(‘M’);

testQrcode.setQrcodeEncodeMode(‘B’);

testQrcode.setQrcodeVersion(7);

String testString = sms_info;

byte[] d = testString.getBytes(“gbk”);

System.out.println(d.length);

//BufferedImage bi = new BufferedImage(98, 98, BufferedImage.TYPE_INT_RGB);

BufferedImage bi = new BufferedImage(98, 98,

如何用java生成二維碼

package common;

import java.awt.Color;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.util.HashMap;

import java.util.Map;

import javax.imageio.ImageIO;

import jp.sourceforge.qrcode.QRCodeDecoder;

import jp.sourceforge.qrcode.exception.DecodingFailedException;

import com.google.zxing.BarcodeFormat;

import com.google.zxing.Binarizer;

import com.google.zxing.BinaryBitmap;

import com.google.zxing.EncodeHintType;

import com.google.zxing.LuminanceSource;

import com.google.zxing.MultiFormatReader;

import com.google.zxing.MultiFormatWriter;

import com.google.zxing.NotFoundException;

import com.google.zxing.WriterException;

import com.google.zxing.common.BitMatrix;

import com.google.zxing.common.HybridBinarizer;

import com.swetake.util.Qrcode;

/**

 * 二維碼生成工具類

 * @author Cloud

 * @data   2016-12-15

 * QRCode

 */

public class QRCodeUtil {

    

    //二維碼顏色

    private static final int BLACK = 0xFF000000;

    //二維碼顏色

    private static final int WHITE = 0xFFFFFFFF;

    /**

     * span style=”font-size:18px;font-weight:blod;”ZXing 方式生成二維碼/span

     * @param text    a href=”javascript:void();”二維碼內容/a

     * @param width    二維碼寬

     * @param height    二維碼高

     * @param outPutPath    二維碼生成保存路徑

     * @param imageType        二維碼生成格式

     */

    public static void zxingCodeCreate(String text, int width, int height, String outPutPath, String imageType){

        MapEncodeHintType, String his = new HashMapEncodeHintType, String();

        //設置編碼字符集

        his.put(EncodeHintType.CHARACTER_SET, “utf-8”);

        try {

            //1、生成二維碼

            BitMatrix encode = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, his);

            

            //2、獲取二維碼寬高

            int codeWidth = encode.getWidth();

            int codeHeight = encode.getHeight();

            

            //3、將二維碼放入緩衝流

            BufferedImage image = new BufferedImage(codeWidth, codeHeight, BufferedImage.TYPE_INT_RGB);

            for (int i = 0; i  codeWidth; i++) {

                for (int j = 0; j  codeHeight; j++) {

                    //4、循環將二維碼內容定入圖片

                    image.setRGB(i, j, encode.get(i, j) ? BLACK : WHITE);

                }

            }

            File outPutImage = new File(outPutPath);

            //如果圖片不存在創建圖片

            if(!outPutImage.exists())

                outPutImage.createNewFile();

            //5、將二維碼寫入圖片

            ImageIO.write(image, imageType, outPutImage);

        } catch (WriterException e) {

            e.printStackTrace();

            System.out.println(“二維碼生成失敗”);

        } catch (IOException e) {

            e.printStackTrace();

            System.out.println(“生成二維碼圖片失敗”);

        }

    }

    

    /**

     * span style=”font-size:18px;font-weight:blod;”二維碼解析/span

     * @param analyzePath    二維碼路徑

     * @return

     * @throws IOException

     */

    @SuppressWarnings({ “rawtypes”, “unchecked” })

    public static Object zxingCodeAnalyze(String analyzePath) throws Exception{

        MultiFormatReader formatReader = new MultiFormatReader();

        Object result = null;

        try {

            File file = new File(analyzePath);

            if (!file.exists())

            {

                return “二維碼不存在”;

            }

            BufferedImage image = ImageIO.read(file);

            LuminanceSource source = new LuminanceSourceUtil(image);

            Binarizer binarizer = new HybridBinarizer(source);  

            BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);

            Map hints = new HashMap();

            hints.put(EncodeHintType.CHARACTER_SET, “UTF-8”);

            result = formatReader.decode(binaryBitmap, hints);

        } catch (NotFoundException e) {

            e.printStackTrace();

        }  

        return result;

    }

    

    /**

     * span style=”font-size:18px;font-weight:blod;”QRCode 方式生成二維碼/span

     * @param content    二維碼內容

     * @param imgPath    二維碼生成路徑

     * @param version    二維碼版本

     * @param isFlag    是否生成Logo圖片    為NULL不生成

     */

    public static void QRCodeCreate(String content, String imgPath, int version, String logoPath){

         try {  

            Qrcode qrcodeHandler = new Qrcode();  

            //設置二維碼排錯率,可選L(7%) M(15%) Q(25%) H(30%),排錯率越高可存儲的信息越少,但對二維碼清晰度的要求越小    

            qrcodeHandler.setQrcodeErrorCorrect(‘M’);  

            //N代表數字,A代表字符a-Z,B代表其他字符  

            qrcodeHandler.setQrcodeEncodeMode(‘B’);  

            //版本1為21*21矩陣,版本每增1,二維碼的兩個邊長都增4;所以版本7為45*45的矩陣;最高版本為是40,是177*177的矩陣  

            qrcodeHandler.setQrcodeVersion(version);

            //根據版本計算尺寸

            int imgSize = 67 + 12 * (version – 1) ;  

            byte[] contentBytes = content.getBytes(“gb2312”);  

            BufferedImage bufImg = new BufferedImage(imgSize , imgSize ,BufferedImage.TYPE_INT_RGB);  

            Graphics2D gs = bufImg.createGraphics();  

            gs.setBackground(Color.WHITE);  

            gs.clearRect(0, 0, imgSize , imgSize);  

            // 設定圖像顏色  BLACK

            gs.setColor(Color.BLACK);

            // 設置偏移量 不設置可能導致解析出錯  

            int pixoff = 2;

            // 輸出內容  二維碼  

            if (contentBytes.length  0  contentBytes.length  130) {

                boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);

                for (int i = 0; i  codeOut.length; i++) {

                    for (int j = 0; j  codeOut.length; j++) {

                        if (codeOut[j][i]) {  

                            gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);

                        }  

                    }  

                }  

            } else {  

                System.err.println(“QRCode content bytes length = ” + contentBytes.length + ” not in [ 0,130 ]. “);  

            }

           /* 判斷是否需要添加logo圖片 */

            if(logoPath != null){

                File icon = new File(logoPath);

                if(icon.exists()){

                    int width_4 = imgSize / 4;

                    int width_8 = width_4 / 2;

                    int height_4 = imgSize / 4;

                    int height_8 = height_4 / 2;

                    Image img = ImageIO.read(icon);

                    gs.drawImage(img, width_4 + width_8, height_4 + height_8,width_4,height_4, null);

                    gs.dispose();

                    bufImg.flush();

                }else{

                    System.out.println(“Error: login圖片還在在!”);

                }

            }

            gs.dispose();

            bufImg.flush();

            //創建二維碼文件

            File imgFile = new File(imgPath);

            if(!imgFile.exists())

                imgFile.createNewFile();

            //根據生成圖片獲取圖片

            String imgType = imgPath.substring(imgPath.lastIndexOf(“.”) + 1, imgPath.length());

            // 生成二維碼QRCode圖片  

            ImageIO.write(bufImg, imgType, imgFile);  

         } catch (Exception e) {  

             e.printStackTrace();  

         }

    }

    

    /**

     * span style=”font-size:18px;font-weight:blod;”QRCode二維碼解析/span

     * @param codePath    二維碼路徑

     * @return    解析結果

     */

    public static String QRCodeAnalyze(String codePath) {

        File imageFile = new File(codePath);

        BufferedImage bufImg = null;  

        String decodedData = null;  

        try {

            if(!imageFile.exists())

                return “二維碼不存在”;

            bufImg = ImageIO.read(imageFile);

          

            QRCodeDecoder decoder = new QRCodeDecoder();  

            decodedData = new String(decoder.decode(new ImageUtil(bufImg)), “gb2312”);  

        } catch (IOException e) {  

            System.out.println(“Error: ” + e.getMessage());  

            e.printStackTrace();  

        } catch (DecodingFailedException dfe) {  

            System.out.println(“Error: ” + dfe.getMessage());  

            dfe.printStackTrace();  

        }

        return decodedData;

    }

}

3、最後貼測試代碼:

package test;

import java.awt.image.BufferedImage;

import java.io.InputStream;

import java.net.URL;

import javax.imageio.ImageIO;

import common.ImageUtil;

import common.QRCodeUtil;

import jp.sourceforge.qrcode.QRCodeDecoder;

/**

 * 二維碼生成測試類

 * @author Cloud

 * @data   2016-11-21

 * QRCodeTest

 */

public class QRCodeTest {

    public static void main(String[] args) throws Exception {

        /**

         *    QRcode 二維碼生成測試

         *    QRCodeUtil.QRCodeCreate(“”, “E://qrcode.jpg”, 15, “E://icon.png”);

         */

        /**

         *     QRcode 二維碼解析測試

         *    String qrcodeAnalyze = QRCodeUtil.QRCodeAnalyze(“E://qrcode.jpg”);

         */

        /**

         * ZXingCode 二維碼生成測試

         * QRCodeUtil.zxingCodeCreate(“”, 300, 300, “E://zxingcode.jpg”, “jpg”);

         */

        /**

         * ZxingCode 二維碼解析

         *    String zxingAnalyze =  QRCodeUtil.zxingCodeAnalyze(“E://zxingcode.jpg”).toString();

         */

        System.out.println(“success”);

    }

}

原創文章,作者:WIIZ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/141959.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WIIZ的頭像WIIZ
上一篇 2024-10-09 09:53
下一篇 2024-10-09 09:53

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變量和數…

    編程 2025-04-29
  • 如何用Python寫愛心

    本文將會從多個方面闡述如何用Python語言來畫一個美麗的愛心圖案。 一、準備工作 在開始編寫程序之前,需要先理解一些編程基礎知識。首先是繪圖庫。Python有很多繪圖庫,常見的有…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在着手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29

發表回復

登錄後才能評論