前端: 如何利用Qrcode製作一個二維碼生成器?

2021-02-13 趣談前端

玲琅滿目的二維碼在我們的都市和朋友圈中隨處可見, 很多平臺都提供了定製二維碼的服務, 那麼作為一名程式設計師, 我們如何自己實現一個簡單的二維碼生成器呢? 接下來筆者就來帶大家一起利用Qrcode實現一個二維碼生成器.

效果預覽 由上圖可以看出我們可以自定義二維碼的:自定義二維碼中展示的icon以及icon的位置, 大小

在開發之前我們需要先了解:

筆者不會介紹二維碼的詳細實現原理, 因為相關文章很多, 我們從實用的角度出發來解決實際問題.

QR Code碼QR Code碼,是由 Denso 公司於1994年9月研製的一種矩陣二維碼符號,它具有一維條碼及其它二維條碼所具有的信息容量大、可靠性高、可表示漢字及圖象多種文字信息、保密防偽性強等優點。

關於QR Code碼我們需要知道2個核心的知識, 也就是 QR Code數據表示方法以及糾錯能力.

QR Code數據表示方法 : 深色模塊表示二進位"1",淺色模塊表示二進位"0"。了解以上兩個知識對於我們實現定製二維碼非常由幫助. 在使用Qrcode這個插件時也會用到.Qrcode基本使用記憶如何包裝成自定義受控組件因為我們大多數項目目前都採用react或者vue開發了, 所以我們直接用對應的插件版本即可, 這裡筆者使用的是qrcode.react.  從使用量上看這個庫還是非常不錯的, 我們只需要2-3步就可以快速利用它生成一個靜態二維碼.要想實現一個二維碼生成器, 首先我們需要能自定義二維碼的屬性, 也就是筆者開頭列舉的幾項, 所以這些屬性我們完全要從外部獲取, 也就是說二維碼組件我們要做成受控的, 如下:  由上圖我們得到了如下的react組件模式:

<div className={styles.codeWrap}>
<QRCode value={url} size={codeSize} bgColor={bgColor} fgColor={fgColor} imageSettings={{src: imgUrl[0].url, x: null, y: null, excavate: true, height: imgH, width: imgW}} />
</div>

其實就需要用到我們強大的表單渲染器了, 我們需要給qrcode組件對接一個表單編輯器, 也就是下圖所示的FormEditor: 

為了簡單起見筆者直接用H5-Dooring提供的FormEditor, 我們只需要寫如下json結構就可以自動生成一個Form編輯器, 如下:

const Qrcode: IQrcodeSchema = {
editData: [
{
key: 'url',
name: 'url地址',
type: 'Text',
},
{
key: 'codeSize',
name: '二維碼尺寸',
type: 'Number',
},
{
key: 'bgColor',
name: '背景色',
type: 'Color',
},
{
key: 'fgColor',
name: '前景色',
type: 'Color',
},
{
key: 'level',
name: '等級',
type: 'Select',
range: [
{
key: 'L',
text: '低',
},
{
key: 'M',
text: '中',
},
{
key: 'Q',
text: '良',
},
{
key: 'H',
text: '高',
},
],
},
{
key: 'imgUrl',
name: '二維碼圖標',
type: 'Upload',
isCrop: true,
cropRate: 1,
},
{
key: 'imgW',
name: '圖標寬度',
type: 'Number',
},
{
key: 'imgH',
name: '圖標高度',
type: 'Number',
},
],
config: {
url: 'https://github.com/MrXujiang/h5-Dooring',
codeSize: 180,
bgColor: 'rgba(255,255,255,1)',
fgColor: 'rgba(0,0,0,1)',
level: 'L',
imgUrl: [
{
uid: '001',
name: 'image.png',
status: 'done',
url: `http://xxxx.jpg`,
},
],
imgW: 48,
imgH: 12
},
};

export default Qrcode;

此時我們就能渲染出文章開頭的二維碼生成器了, 我們可以定製自己喜歡的二維碼風格和icon. 編輯器中的等級選項也就是筆者在開頭介紹的QR Code的糾錯能力, 我們可以自定義選擇我們需要的等級.

目前筆者已經把二維碼生成器集成到開源項目H5-Dooring中了,在線把玩地址(電腦端體驗更佳): H5編輯器 | 更新二維碼生成器組件覺得有用 ?喜歡就收藏,順便點個讚吧,你的支持是我最大的鼓勵!微信搜 「趣談前端」,發現更多有趣的H5遊戲, webpack,node,gulp,css3,javascript,nodeJS,canvas數據可視化等前端知識和實戰.


喜歡就點個在看再走吧


相關焦點

  • [python] Python二維碼生成器qrcode庫入門
    Python二維碼生成器qrcode庫入門qrcode是二維碼生成的Python開源庫,官方地址為python-qrcode1 簡介qrcode依賴於pillow,安裝代碼如下:pip install qrcode[pil]
  • 我用 JavaScript 製作了一個二維碼生成器
    雖然我們可以在Chrome等瀏覽器中生成URL二維碼,但自己親手來製作一個簡單的二維碼生成器也是一件很有趣的事。我們今天的主題就是這個!/js/app.js"></script>最後一個元素是當我們通過JavaScript從庫中獲取二維碼時立即顯示二維碼(稍後會詳細介紹)。接下來討論JavaScript。
  • 二維碼製作生成器
    二維條碼/二維碼(2-dimensional bar code)是用某種特定的幾何圖形按一定規律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息的
  • Vue—前端生成二維碼
    與後端生成二維碼相比,前端生成二維碼更具有靈活性,下面就介紹兩種前端生成二維碼的方式,兩種方式相比之下,vue-qr比qrcode多了一個再中間添加
  • pyqt5做了一個二維碼生成器,已打包成exe可執行程序...
    開始之前先來看一下通過二維碼生成器是如何生成個性化二維碼的。其中使用的python包和之前的GUI應用製作使用的模塊是一樣的。後面的一篇文章中將會說明如何將外部資源打包到exe的應用中去。做GUI的桌面應用,首先還是使用pyqt5進行界面的布局和界面組件的添加,雖然代碼量看起來比較多,但邏輯不多。
  • 二維碼生成器
    那麼二維碼生成器是如何做到精準識別呢?二維碼生成器其實就是二維碼生成軟體,二維碼生成器的工作原理是將所需的信息輸入二維碼生成器中,生成相應的二維碼,然後進行保存應用。二維碼生成器的製作需要一個二維碼生成算法,或者一個二維碼插件,然後用JAVA ,C#,VB等程式語言編寫一個調用軟體就可以做成二維碼生成器了。
  • Python使用QRCode生成二維碼
    Python使用QRCode生成二維碼,qrcode會依賴Image這個包,所以我們首先安裝
  • 【草料二維碼生成器】
    >前言:相信很多夥伴幾乎每天會用手機掃一掃功能,如何製作一個屬於個人的二維碼或定製專屬的掃碼內容呢?草料二維碼生成器,將你所想表達的內容直接生成二維碼,還能拿來表白,一器多用。【聲明:本微信公眾號所有資源,僅限用於學習和研究目的,不得將上述內容用於商業或者非法用途,如有侵權請後臺與我們聯繫及時處理刪除。】
  • 【二維碼生成器】給你一個精彩的掃一掃
    二維碼在我們現在的生活中隨處可見,交友、支付、傳遞信息等等都要用到二維碼。但是黑白二維碼是不是太單調了呢?
  • 【二維碼生成器】快速生成個性二維碼
    二維碼製作器,製作二維碼,創建二維碼,二維碼名片,二維碼掃描器是一個非常簡單方便的二維碼生成器。告別簡單的黑白樣式!
  • Python實用工具之製作酷炫二維碼
    效果圖寫在前面 二維碼的使用之處越來越多,普通的二維碼,相信大家已經都司空見慣了,今天就帶大家使用 Python 的 myqr 庫,來製作些不一樣的二維碼。contrastfloat對比度以1.0為界限,值越小表示對比度越低,值越大表示對比度越高brightnessfloat亮度以1.0為界限,值越小表示對比度越低,值越大表示亮度越高save_namestr輸出文件名默認輸出文件名是「qrcode.png」save_dirstr二維碼存儲位置默認存儲位置是當前目錄製作普通二維碼製作普通的二維碼,只需要指定二維碼指向的內容與保存的名稱
  • 製作屬於自己的動態二維碼方法~
    大家平時見到的二維碼是不是都像下面這樣,千篇一律,沒有新意。是不是很有意思?今天給大家分享一個有趣的二維碼生成庫:amzqr。他可以生成動態、彩色、各式各樣的二維碼。你可以直接通過pip來安裝。amzqr http://weixin.qq.com/r/IBPYwLvEiub1rf_j90Yy你也可以通過-n來改變文件輸出名,格式可以是.jpg,.bmp,.png,.tif,同時利用-d來改變圖片輸出的路徑。
  • 手把手教你用wx做一個二維碼生成器,並打包成可執行程序
    前言我們通常所說的二維碼,是指 Quick Response,簡寫為QR。QR 是近幾年來行動裝置上超流行的一種編碼方式,它比傳統的條形碼(Bar Code)能存更多的信息,也能表示更多的數據類型。儘管在網上很容易找到各種各樣的二維碼生成器,但鮮有定製功能。
  • 手把手教你用wxPython做一個二維碼生成器,並打包成可執行程序
    前言我們通常所說的二維碼,是指 Quick Response,簡寫為QR。QR 是近幾年來行動裝置上超流行的一種編碼方式,它比傳統的條形碼(Bar Code)能存更多的信息,也能表示更多的數據類型。儘管在網上很容易找到各種各樣的二維碼生成器,但鮮有定製功能。接下來,我將手把手教大家用 wxPython 做一個可以指定前景、背景色以及中心插圖的二維碼生成器,並最終打包成一個exe程序。
  • 【一款二維碼生成器】
    再次對新粉絲說一下,要找資源儘量找本篇文章發布時間一個月內發布的文章,時間再長一點極有可能失效或被官方修復。總之一句話,早用早受益。還有一點希望大家重視,現在有部分不法份子,從本公眾號獲取資源,在一些電商平臺銷售。導致一本公眾號一直被監控。可能會被封號。官方也會一直跟蹤修復bug,導致很多功能破解難度加大(畢竟個人小團隊無法與官方巨無霸匹敵)。
  • php網站製作如何生成二維碼
    品味二維碼:草料:其他都可以在網上搜到很多,但是這些api可能過一段時間會失效,以前就遇到過這樣的情況,這就接口不可控性太大,所以我們要介紹第二種方法二、用插件生成二維碼這裡使用的是PHPQRcode 新建函數(這裡用的thinkPhp框架)/*** 生成二維碼* @param $save_path 二維碼保存路徑* @param string $qr_data 手機掃描後要跳轉的網址* @param string $qr_level 默認糾錯比例 分為L、M、Q、H四個等級,H代表最高糾錯能力* @param int $qr_size
  • 批量二維碼製作
    網上也有各式各樣的二維碼在線製作工具,如果只是一兩個的二維碼就很簡單,我們可以用草料二維碼。可以使用草料二維碼生成器我們可以直接百度「草料二維碼生成器」直接在「草料二維碼生成器」在線生成二維碼,生成完成後保存圖片即可;批量製作條碼、批量製作二維碼在很多場合都可以應用到,這是一個很常見的需求。
  • 使用phpqrcode生成二維碼
    然而,我們可以使用phpqrcode這個現成的類文件,PHP二維碼生成類庫,利用它可以輕鬆生成二維碼。方法解讀:下載下來的類文件是一個壓縮包,裡邊包含很多文件和演示程序,我們只需要裡邊的phpqrcode.php這一個文件就可以生成二維碼了。
  • 前端生成二維碼插件jquery.qrcode.js
    本期介紹一個前端動態生成二維碼的插件 jquery.qrcode.js,jquery.qrcode.js
  • python製作條形碼和二維碼
    在實驗室搬磚的我有一個固定任務,負責給產品製作二維碼和條形碼,這是一個高定製性且高重複性的活,所以我就用python寫了關於製作條形碼和二維碼的腳本。但最近過年要回家了,人走了磚還得繼續搬啊,所以就把之前的腳本打包成了exe文件,直接給實驗室職工了,算一個交磚儀式了。