java二維碼生成,java二維碼生成鏈接, 跳轉頁面

本文目錄一覽:

怎麼使用java生成DataMatrix格式的二維碼?

參考:

import com.spire.barcode.BarCodeGenerator;

import com.spire.barcode.BarCodeType;

import com.spire.barcode.BarcodeSettings;

import javax.imageio.ImageIO;

import java.awt.*;

import java.awt.image.BufferedImage;

import java.io.File;

public class CreateDataMatrix {

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

      //生成BarcodeSettings實例

      BarcodeSettings settings = new BarcodeSettings();

      //設置條形碼類型為DataMatrix

      settings.setType(BarCodeType.Data_Matrix);

      //設置條形碼模型寬度

      settings.setX(1.5f);

      //設置數據和顯示文本

      settings.setData(“ABC 123456789ABC 123456789ABC 123456789”);

      settings.setData2D(“ABC 123456789ABC 123456789ABC 123456789”);

      //創建BarCodeGenerator實例

      BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);

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

      BufferedImage bufferedImage = barCodeGenerator.generateImage();

      //保存為PNG圖片

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

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

  }

}

用到了spire.barcode for java庫

如何用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”);

    }

}

我已經用java生成了一個二維碼了,怎樣讓掃描二維碼後,讀取到一個word文檔,大神。

不用這麼麻煩,直接使用二維碼生成器就行了,只要上傳文檔,自動直接生成二維碼。方便有快捷。

推薦一款目前市面上比較不錯的二維碼生成工具。

登錄網站進入操作後台。

點擊添加二維碼內容。(可查看管理製作過的二維碼,如果是第一次使用直接顯示第三步的編輯頁面。

3.編輯二維碼里的內容,上傳你的文檔。

上傳完成後保存即可生成二維碼,並且生成的二維碼內容支持隨時修改,原碼不變!

希望對你有幫助!

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/151755.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-11 13:44
下一篇 2024-11-11 13:44

相關推薦

  • 打包後頁面空白的解決方案

    當我們在調試階段時,我們的app可能看起來完美無缺,但當我們進行打包時,在運行app時,我們可能會遇到白屏或空白的問題。在這篇文章中,我們將探討如何解決這種問題。 一、檢查文件路徑…

    編程 2025-04-29
  • Avue中如何按照後端返回的鏈接顯示圖片

    Avue是一款基於Vue.js、Element-ui等技術棧的可視化開發框架,能夠輕鬆搭建前端頁面。在開發中,我們使用到的圖片通常都是存儲在後端伺服器上的,那麼如何使用Avue來展…

    編程 2025-04-28
  • LwIP短鏈接client常式用法介紹

    本文將詳細闡述LwIP短鏈接client常式,該常式是基於LwIP協議棧實現的一個短鏈接客戶端程序,適用於嵌入式設備上進行互聯網通信。 一、LwIP介紹 LwIP(Lightwei…

    編程 2025-04-28
  • Python操作Web頁面

    本文將從多個方面詳細介紹Python操作Web頁面的技巧、方法和注意事項。 一、安裝必要的庫 在Python中操作Web頁面,需要用到一些第三方庫。 pip install req…

    編程 2025-04-28
  • 如何創建短鏈接和實現熱切換

    在本文中,我們將會介紹如何使用Python創建短鏈接和實現熱切換功能。 一、創建短鏈接 1、什麼是短鏈接?通俗易懂來說,短鏈接就是將長鏈接變成一個短小精悍的地址,通常是為了方便用戶…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若伺服器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • 源程序只有經過編譯和鏈接後才能成為可執行程序

    源程序只有經過編譯和鏈接後才能成為可執行程序,這是編程開發中極為重要的一個環節。下面從編譯、鏈接以及可執行程序的生成過程三個方面來詳細闡述。 一、編譯 編譯是將源碼轉化為機器代碼的…

    編程 2025-04-27
  • Python中提取子鏈接Python頭歌

    本文將從多個方面詳細闡述Python中提取子鏈接Python頭歌的方法和技巧。 一、正則表達式方法 使用Python的正則表達式模塊可以方便地提取子鏈接Python頭歌。以下是一個…

    編程 2025-04-27
  • Vue二維碼生成

    一、二維碼生成概述 在前端開發中,經常需要生成二維碼,例如付款碼、頁面分享等。對於生成二維碼的實現,有多種方式。其中,基於第三方庫的實現是比較常見的方式。Vue作為一個流行的前端框…

    編程 2025-04-25

發表回復

登錄後才能評論