1. 移動支付中的二維碼支付的原理是什麼
移動支付中的二維碼支付的原理是對接微信支付或者支付寶支付等二維碼支付功能的微POS。
微POS通常在原有銀聯刷卡支付的基礎上增加對二維碼支付的支持並作為其產品亮點。而掌貝微POS在各個行業的適用性和實用性能大大增強。
二維碼支付是一種基於賬戶體系搭起來的新一代無線支付方案。在該支付方案下,商家可把賬號、商品價格等交易信息匯編成一個二維碼,並印刷在各種報紙、雜志、廣告、圖書等載體上發布。
用戶通過手機客戶端掃拍二維碼,便可實現與商家支付寶賬戶的支付結算。最後,商家根據支付交易信息中的用戶收貨、聯系資料,就可以進行商品配送,完成交易。同時,由於許多二維碼掃碼工具並沒有有惡意網址識別與攔截的能力,騰訊手機管家的數據顯示,這給了手機病毒極大的傳播空間,針對在線惡意網址、支付環境的掃描與檢測來避免二維碼掃描渠道染毒。
2. 每天都能接觸到的微信支付二維碼,到底是通過什麼原理生成的
微信支付的二維碼是一種用特定的幾何圖形按編排規律在二維碼方向上分部,採用黑白相間的圖形來記錄數據符號信息的編碼。
3. 二維碼的原理是什麼,為什麼每個人都可以擁有二維碼
二維碼的原理是一串沒有應用程序編程介面的純數字,每分鍾都通過指定的軟體開發工具包進行更改。以該號碼為參數,可以通過介面調用完成演繹。移動設計的普及,二維碼的成本很低所以很多人都可以用二維碼。事實上,扣除額基本上是一個支付賬戶。然後在掃描代碼時自動輸入序列號,通過第三方支付客戶端調用支付平台的SDK即可完成扣款。
二維碼支付方式在中國的興起並非偶然。其形成背景主要與中國信息技術和電子商務的快速發展有關。信息技術的日益成熟推動了智能手機和平板電腦等移動終端的誕生,使人們的移動生活更加豐富多彩。同時,國內電子商務也與「移動」密切相關,尤其是O2O的發展。隨著大量的移動設備和大量的移動消費,支付成本變得尤為關鍵。因此,二維碼支付解決方案應運而生。
4. 二維碼簡單原理是什麼
原理就是0和1的編碼,很簡單,但實現起來不是很容易,所以就交給機器做啦。
把數字、字母、漢字等信息通過特定的編碼翻譯成二進制0和1,一個0就是一個白色小方塊,一個1就是一個黑色小方塊。這樣就很容易聯想到我們高中學習二進制時狀態對吧,比如8的二進製表示是1000
Position Detection Pattern是定點陣圖案,就是我們常見的二維碼三個角的大方塊,用於標記二維碼的矩形大小。
Timing Patterns也是用於定位的。因為二維碼有40種尺寸,尺寸過大了後需要有根標准線,不然掃描的時候可能會掃歪。
Format Information 存在於所有的尺寸中,用於存放一些格式化數據的。
Data Code 是數據碼、Error Correction Code是糾錯碼。
二維碼的主體構成就是如此,如果你想要深入了解二維碼的生成和解析原理,請移步至此:
https://blog.csdn.net/kelindame/article/details/45155185
愣是誰也不會想到二維碼居然會全面地覆蓋我們的生活,網站登錄要掃二維碼,加好友要掃二維碼,就連菜市場賣菜的老頭、老太太都懂得掃碼支付了,小小「方塊」脫穎而出,不僅僅可以容納數字,還可以容納文字、圖像、指紋、聲音等等。
二維碼展現的是機器二進制語言,「0」和「1」這兩個數字組成了如今我們從電腦里看到的所有的信息。在二維碼中,白色的方塊表示0,而黑色的方塊表示1。
一個二維碼是由定位標志、定時標志、校正標志、內容信息這四個部分組成的。定位標志也叫碼眼,用來定位二維碼的圖形區域,沒有它二維碼就無法被識別出來。定時標志並不是非必須的,所以它是可以刪除的,在大型二維碼中一般起到確定坐標的作用,屬於輔助性的定位。校正標志可以確保我們不管在哪個方向掃描二維碼都能夠識別出內容來,如果沒有這個標志我們只能正面地掃碼二維碼了。內容信息裡面填充的就是掃碼的人所能看到的信息,內容信息是具有一定的容錯率,所以中間刪減或者遮擋掉一部分都可以被掃描出來。
二維碼有四種糾錯級別,從低到高分別是L、M、Q、H,他們的糾錯率分別是7%、15%、25%、30%,糾錯率越高越容易被快速掃描。糾錯其實就是在創建編碼二維碼的時候創建了一些冗餘數據,這樣不但可以確保准確快速的識別出二維碼完整無誤的信息,也可以確保二維碼部分損壞時不影響讀取正確的信息。
二維碼為什麼會出現二維碼其實很早就出現了,它是由日本電裝(DENSO)旗下子公司DENSO WAVE一名叫原昌宏的人1994年發明出來的。
二維碼的出現旨在取代傳統的僅能容納少量數字信息的條形碼。因為上世紀60年代後,日本的商超一派繁榮景象,而收銀員卻要不停地輸入產品信息和價格,所以「腱鞘炎」這種職業病開始流行。DENSO WAVE懷著滿足客戶需求的願景成立的僅有2個人的研發小組旨在「容納更多的信息」。傳統條形碼僅在一個方向上存儲信息,而且很容易讀取錯誤,而二維碼則在2個方向存儲信息,信息量就大大地擴容了,二維碼的名稱就是這樣被定義的。
二維碼之所以在今天能夠這么流行除了它本身的巨大優勢之外,還得益於DENSO WAVE放棄行使這項權利的權利,如果DENSO WAVE手握專利收費使用二維碼可能又是另一番命運。
手機掃描二維碼的一瞬間發生了什麼?手機掃描二維碼解碼程序會自動的識別二維碼中的信息,滴一聲之後就會對二維碼做相應的處理。比如是一段文字就會馬上彈出文字信息,如果是一條網頁URL則會自動的傳輸數據給伺服器,伺服器在接收到數據後就將相應的請求信息反饋到手機上。
二維碼中的信息自生成出來之後就是固化的,真正能識別並產生動作的是手機內置的程序。
二維碼到底會不會被消耗光?二維碼最小的符號尺寸時21*21,最大的符號尺寸時177*177,現在二維碼有40多個官方版本。二維碼的數量跟二維碼的尺寸相關,所以它是有限的。如今全球每天消耗的二維碼達上百億個,但是即使是從宇宙大爆炸到用到今天,138億年也僅僅只是消耗掉一小部分,所以並不需要它會被消耗光。
不會。
ipv4因為是xxx.xxx.xxx.xxx,每一位都是0-9數字,所以總量有限,為了代表一台終端,一台終端只能用一個ip,這樣才知道數據發去哪裡,每個人用一個就很快用完了,因此他有一些解決方案,比如一家對外用同一個公網ip,而手機,平板,電腦則分配內網的ip,這樣就變相擴展了很多可用ip。
而二維碼只是編碼,通俗地說,比如0代表我,1代表是,2代表小學生。那麼012就代表我是小學生。如果文本數據一樣,那麼生成的圖形就一樣,是可以重復的,並不存在用完一說。比如支付寶自己可以寫程序將文本「轉賬=100,付款人=xxx,收款人=xxx,app=支付寶,加密=123456」這些文本信息變成二維碼,自己生成,自己識別,就能達到功能。當然真實的文本肯定都是各種加密N次的亂碼,哈哈。
二維碼是一維條形碼碼的變形,裡面用演算法儲存了一些文本數據,和文字一樣,不過是程序通過演算法讀取的,可能是一個網址或者其他數據,和ip不一樣不會用盡。還有就是另一個原因,各家app用的雖然都是二維碼,但是微信卻不能直接使用支付寶的二維碼,雖然能掃描出裡面的數據,卻無法分析裡面的內容,app是排他的,自己家的二維碼只有自己能用,也就是說二維碼是相互隔離的,並不會通用和相互佔用
二維碼的簡單原理是0和1的關系,二進制,可以理解為點和面以及相距空間交織而成,裡麵包含了編碼、解碼、圖形解碼、碼元、計算機技術、定點陣圖案以及容錯糾正功能等,常見的二維碼大部分屬於棋盤式結構,QR CODE矩陣二維碼。
二維碼已經被廣泛應用到生活,從初始的支付行為到現在的社交、門禁、購物、識別以及各種的生活場景應用,可以說這個時代已經離不開二維碼。
二維碼的構成主要是由編碼規則二進制和碼元的交替順序而成,裡麵包含了大量信息,分別用碼元組成黑白圖案,定點陣圖案。
目前常見的流行二維碼基本是方形特徵,但實際上二維碼的表面圖案是可以變換的,主要得益於圖案解碼技術,普通的二維碼是可以通過計算機技術混編,通過解碼還原,得出不同的表面圖案,而不影響碼元結構,這就是二維碼的掩碼畫圖技術。
由於相機拍照時會產生噪點以及產生不同的灰度,故此,二維碼技術為解決該問題,採取了新型圖形符號自動識讀處理,並用坐標定位技術編寫。
由於二維碼中包含了內部數據單位功能,以及坐標識別定位功能,故能夠防止部分遮擋,圖案變臟,翻轉拍攝等因素,而不影響二維碼的掃碼讀取。
我是奇謀 科技 哥,歡迎大家探討更多關於計算機以及手機的編程使用話題,謝謝提問,感恩相逢。
二維碼原理
二維碼是通過二進制存儲信息的。用「點」表示二進制「1」, 用「空」表示二進制「0」,「點」和「空」的排列組成代碼。
識別二維碼是要經過以下幾步:
一.定位 ,矩形小方格就是用來定位的。小方格周圍的區域存儲著版本信息,數據編碼信息。
二.讀取數據 ,讀數是從右下角開始由下往上一條龍讀取的。
關於二維碼
先說一下二維碼的前身——條形碼,也就是超市收銀員掃的那個黑白條。電腦在水平方向上識別粗細不均的黑白條,就能找出藏在其中的商品編號信息。
相比於只在一個維度上攜帶信息的條形碼, 「二維碼」在水平、垂直兩個維度上,都攜帶了信息,也就做成了這個方塊狀的樣子。
條形碼和二維碼這一對好兄弟,說白了,其實就是給數字、字母、符號等這些字元,換了一身衣服,把它們打扮成了能被手機相機識別的黑白條或塊。
眾所周知,整個計算機和互聯網文明,將我們平時使用的漢字、符號、數字、字母等各種字元,轉換成0和1組成的二進制數字序列,存儲到資料庫里。
二維碼就是把這些0和1組合起來,0對應的是白色小方塊,1對應的就是黑色小方塊,把這些小方塊,填進大方塊里,就組成了一個二維碼。
但是光有小方塊是不夠的, 還得需要其他的東西來完善整個二維碼的信息。
下面就是二維碼的一些組成
定位區: 二維碼上有三個大方塊,這個就是二維碼的定位區。有了這三個點,不管是從哪個方向讀取二維碼,信息都可以被識別。
定點陣圖形和分隔符: 定點陣圖形決定了二維碼符號中模塊的坐標,而分隔符的作用是將位置探測圖形與符號的其餘部分分開。
版本信息: 版本信息就是二維碼的版本號,我們常說的V1.0、V2.0就是版本號
格式信息: 二維碼採用的編碼格式,常見的二維碼都是採用QR碼來進行編碼
糾錯碼信息: 當我們對二維碼進行掃描時,不能保證掃的每一位信息都正確,這就需要依賴糾錯碼信息來進行矯正
校正圖形: 當二維碼遭到污染或者破壞時,校正圖形保證了沒有被破壞的信息仍然可以被識別。
大同小異的圖案讀出了各人的專屬代碼
5. 二維碼是化學原理還是物理原理
不是
化學原理那就是要發生化學變化
化學變化就是要生成新物質
而過濾不生成新物質
只能算是狀態發生了改變
所以說是物理變化
就是物理原理
6. 手機掃二維碼是採用什麼原理
二維碼是利用矩陣式二維碼的原理和行列式二維碼的原理,將信息存儲在圖片中的。所以可以這樣理解,二維碼就是用來存儲信息的,手機的掃描就可以讀取其中的信息,信息就可以是文本、網站鏈接、文件、圖片、甚至視頻、軟體安裝包等等。這就容易給不發分子造成牟利的機會,因為你掃描二維碼之前不知道裡面含有什麼信息,如果掃描完將信息讀取完後又不知道如何辨別信息有沒有安全性的問題,繼續操作就容易出現手機中毒、惡意扣費等等問題。二維碼本身是沒有病毒的,含有病毒的是二維碼中的信息指向的網站或軟體安裝包等。由於二維碼在存儲信息上的功能這就使得它擁有以下的用途●信息獲取(名片、地圖、WIFI密碼、資料)●網站跳轉(跳轉到微博、手機網站、網站)●廣告推送(用戶掃碼,直接瀏覽商家推送的視頻、音頻廣告)●手機電商(用戶掃碼、手機直接購物下單)●防偽溯源(用戶掃碼、即可查看生產地;同時後台可以獲取最終消費地)●優惠促銷(用戶掃碼,下載電子優惠券,抽獎)●會員管理(用戶手機上獲取電子會員信息、VIP服務)●手機支付(掃描商品二維碼,通過銀行或第三方支付提供的手機端通道完成支付)二維碼偽裝的途徑了解完上面的信息後我們就知道,二維碼導致手機中毒、扣費等其實與電腦中毒的機理是十分類似的,只不過你在掃描二維碼之前無法對其中的信息進行辨別。而我們使用的又是手機掃描而不是其他設備(手機中有sim卡,消費簡單),如果在不知情的條件下安裝扣費軟體後讓他人謀利實在是太簡單了。下面是一般二維碼偽裝的途徑:1.藏在熱門的正常軟體里:比如一些知名游戲軟體、工具軟體中;2.專門開發出一種帶功能性的免費軟體,把病毒嵌入;3. 扣費病毒不立即安裝,先安裝一個木馬病毒,等時機合適時,通過伺服器給指令下載相關的扣費病毒,靜默安裝;4.偽裝在主題類軟體中,這是塞班最為常見的病毒載體;5. 偽裝為系統升級軟體,諾基亞手機上經常出現;6. 偽裝為殺毒軟體,以前曾出現過偽360、偽卡巴等。如何做到安全使用掃描二維碼1:選用專業掃碼工具§拍二維碼、360安全衛士等軟體,都已經加入了一個監測功能,掃到有可疑網址時,會作出安全提醒。2:通常來說,報紙、雜志、知名品牌海報上提供的二維碼是安全的,但在網站上發布的二維碼需要引起警惕。3:假如是通過二維碼來安裝軟體,在安裝好後,先用殺毒軟體掃描一遍再打開。7. 二維碼是什麼東西,是什麼原理
二維條碼/二維碼(2-dimensional bar code)是用某種特定的幾何圖形按一定規律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息的;在代碼編制上巧妙地利用構成計算機內部邏輯基礎的「0」、「1」比特流的概念,使用若干個與二進制相對應的幾何形體來表示文字數值信息,通過圖象輸入設備或光電掃描設備自動識讀以實現信息自動處理:它具有條碼技術的一些共性:每種碼制有其特定的字元集;每個字元佔有一定的寬度;具有一定的校驗功能等。同時還具有對不同行的信息自動識別功能、及處理圖形旋轉變化點。
在代碼編制上巧妙地利用構成計算機內部邏輯基礎的「0」、「1」比特流的概念,使用若干個與二進制相對應的幾何形體來表示文字數值信息,通過圖象輸入設備或光電掃描設備自動識讀以實現信息自動處理。在許多種類的二維條碼中,常用的碼制有:Data Matrix,MaxiCode, Aztec,QR Code, Vericode,PDF417,Ultracode,Code 49,Code 16K等,QR Code碼是1994年由日本DW公司發明。QR來自英文「Quick Response」的縮寫,即快速反應的意思,源自發明者希望QR碼可讓其內容快速被解碼。QR碼最常見於日本、韓國;並為目前日本最流行的二維空間條碼。但二維碼的安全性也正備受挑戰,帶有惡意軟體和病毒正成為二維碼普及道路上的絆腳石。發展與防範二維碼的濫用正成為一個亟待解決的問題。
每種碼制有其特定的字元集;每個字元佔有一定的寬度;具有一定的校驗功能等。同時還具有對不同行的信息自動識別功能及處理圖形旋轉變化等特點。
二維碼是一種比一維碼更高級的條碼格式。一維碼只能在一個方向(一般是水平方向)上表達信息,而二維碼在水平和垂直方向都可以存儲信息。一維碼只能由數字和字母組成,而二維碼能存儲漢字、數字和圖片等信息,因此二維碼的應用領域要廣得多。
二維條碼/二維碼可以分為堆疊式/行排式二維條碼和矩陣式二維條碼。 堆疊式/行排式二維條碼形態上是由多行短截的一維條碼堆疊而成;矩陣式二維條碼以矩陣的形式組成,在矩陣相應元素位置上用「點」表示二進制「1」, 用「空」表示二進制「0」,「點」和「空」的排列組成代碼。 二維碼的原理可以從矩陣式二維碼的原理和行列式二維碼的原理來講述。
通過圖形來包含信息!可以將二維碼當做一種貼在物品上的標簽,在今後的物聯網發展中將會有大用~
當前發展最火的是手機二維碼,就是手機對二維碼拍照,獲取二維碼裡面特殊的信息,這是很有商業價值的模式。
。二維碼 ,又稱二維條碼,二維條形碼最早發明於日本,它是用某種特定的幾何圖形按一定規律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息的,在代碼編制上巧妙地利用構成計算機內部邏輯基礎的「0」、「1」比特流的概念,使用若干個與二進制相對應的幾何形體來表示文字數值信息,通過圖象輸入設備或光電掃描設備自動識讀以實現信息自動處理。它具有條碼技術的一些共性:每種碼制有其特定的字元集;每個字元佔有一定的寬度;具有一定的校驗功能等。同時還具有對不同行的信息自動識別功能、及處理圖形旋轉變化等特點.
二維碼是一種信息載體。
裡面可以包含一個網址連接或者是一句話或者一些簡單的信息。
下載掃描二維碼的工具即可掃描使用二維碼。
二維條碼簡介 由於條碼技術具有輸入速度快、准確度高、成本低、可靠性強等優點,因此在各行業得到了廣泛應用。但隨著應用領域的不斷擴展,傳統的一維條碼漸漸表現出了它的局限:首先,使用一維條碼,必須通過連接資料庫的方式提取信息才能明確條碼所表達的信息含意,因此在沒有資料庫或者不便聯網的地方,一維條碼的使用就受到了限制;其次,一維條碼表達的只能為字母和數字,而不能表達漢字和圖像,在一些需要應用漢字的場合,一維條碼便不能很好的滿足要求;另外,在某些場合下,大信息容量的一維條碼通常受到標簽尺寸的限制,也給產品的包裝和印刷帶來了不便。 二維條碼的誕生解決了一維條碼不能解決的問題,它能夠在橫向和縱向兩個方位同時表達信息,不僅能在很小的面積內表達大量的信息,而且能夠表達漢字和存儲圖像。二維條碼的出現拓展了條碼的應用領域,因此被許多不同的行業所採用二維條碼的分類二維條碼可以分為堆疊式二維條碼和矩陣式二維條碼。堆疊式二維條碼形態上是由多行短截的一維條碼堆疊而成,矩陣式二維條碼以矩陣的形式組成,在矩陣相應元素位置上用點的出現表示二進制「1」,空的出現表示二進制「0」,由點的排列組合確定了代碼表示的含義。具有代表性的堆疊式二維條碼包括PDF417、Code 49、Code 16K等。有代表性的矩陣式二維條碼包括Code one、Aztec、Date Matrix、QR碼等。二維條碼可以使用激光或CCD閱讀器識讀。堆疊式二維條碼中包含附加的格式信息,信息容量可以達到1K,例如:PDF417碼可用來為運輸/收貨標簽的信息編碼,它作為ANSI MH10.8標準的一部分為「紙上EDI」的送貨標簽內容編碼,這種編碼方法被許多的工業組織和機構採用。矩陣式二維條碼帶有更高的信息密度(如:Data Matrix、Maxicode、Aztec、QR碼),可以作為包裝箱的信息表達符號,在電子半導體工業中,將DataMatrix用於標識小型的零部件。矩陣式二維條碼只能被二維的CCD圖像式閱讀器識讀,並能以全向的方式掃描。新的二維條碼能夠將任何語言(包括漢字)和二進制信息(如簽字、照片)編碼,並可以由用戶選擇的不同程度的糾錯級別以和在符號殘損的情況下恢復所有信息的能力。二維條碼的印刷和識別條碼可以直接印刷在被掃描的物品上或者列印在標簽上,標簽可以由供應商專門列印或者現場列印。所有條碼都有一些相似的組成部分。它們都有一個空白區,稱為靜區,位於條碼的起始和終止部分的邊緣的外側。由特殊的起始和終止字元標示符號的開始和結束。校驗符在一些符號法中是必須的,它可以用數學的方法對條碼進行校驗以保證解碼後的信息正確無誤。二維條碼與一維條碼具有許多相同的成分,它同時還包括信息量、排列順序以及糾錯的功能。矩陣式符號沒有標志起始和終止的模塊,但它們有一些特殊的「定位符」,定位符中包含了符號的大小和方位等信息。矩陣式二維條碼和新的堆疊式二維條碼能夠用先進的數學演算法將數據從損壞的條碼符號中恢復。 在使用中,閱讀矩陣式二維條碼必須使用2D CCD條碼閱讀器,二維圖像式CCD條碼閱讀器同樣能閱讀一維線性條形碼和堆疊式二維條碼。使用二維圖像式CCD條碼閱讀器可以全向識讀任何一種符號。盡管每一種閱讀器都有它的優越性,但是若要從一個條碼系統中獲得最大的收益,所選用的掃描器就要求與應用的需求相對應。
你發重了
使用若干個與二進制相對應的幾何形體來表示文字數值信息,通過圖象輸入設備或光電掃描設備自動識讀以實現信息自動處理。更多二維碼的相關信息可登錄中網管家二維碼官網了解。
圖形和代碼轉化
二維碼是什麼原理?不知道從什麼時候開始,我們的生活突然之間就充滿了二維碼,看網頁要掃二維碼,加好友要掃二維碼,現在連樓下賣草莓的大爺都支持掃碼支付,那麼,你有沒有想過,這個長得很奇怪的二維碼,到底是怎麼來的呢?它的原理是什麼?看完你就知道了
其實在介紹二維碼原理之前你可能已經猜到了,二維碼就是把信息翻譯成黑白小方塊,然後填到這個大方塊里,這有點類似中學考試用的答題卡,就是把信息變成機器可掃描圖案,一秒鍾就能知道你得了多少分。當然,二維碼的原理和答題卡還不太一樣,這個稍後會講到。
我們先來說一下二維碼的哥哥----條形碼。也就是超時收銀員掃的那個黑白條,電腦在水平方向上識別粗細不均的黑白條,就能找出藏在其中的商品編號信息,相比於只在一個維度上攜帶信息的條形碼,「二維碼」在水平垂直兩個維度上都攜帶了信息,也就做成了方塊狀的樣子,條形碼和二維碼這一對好兄弟說白了,其實就是給數字、字母、符號等這些字元換了一身衣服,把他們打扮成了能被手機相機識別的黑白條或塊。那麼,最關鍵的問題來了,這些字元,到底是怎麼變成這種二維碼圖案的呢?
這就要提到一個人類具有劃時代意義的偉大發明「二進制」。我們平時使用的數字。字元、漢字等各種字元,雖然畫風完全不同,但是機智的人類發明了一個方法,使他們都可以被統一轉換成又0和1組成的二進制數字序列,這個轉換的過程叫做編碼,國際上有幾套通用的編碼規則,我們今天就用一個例子來感受一下,編碼是怎麼回事。比如AB這個由兩個英文字母組成的字元,根據編碼規則,每一個獨立的英文字母都有唯一一個十進制數字與之對應,而像AB這樣的字元串則要在對應數字的基礎上再做運算,而運算的結果再轉換成二進制,就變成「000111001101」這樣的數字,哦對了,整個計算機和互聯網文明都是建立在這種二進制編碼上的,你現在看得視頻,不管在你的電腦還是手機里,其實也只是一串0和1而以。
我們回到二維碼的生成原理上,字元在變成只有0和1組成的數字序列後,在進行一系列優化演算法(此處自行腦補一系列優化演算法),就得到了最終的二進制編碼。在最後的這串編碼中,一個0就對應的是一個'白色小方塊',一個1就對應的一個『黑色小方塊』,我們把這些小方塊分成8個一組填進大方塊里,這就是一個完整的、可以被手機相機識別的二維碼圖案了。
二維碼為什麼是黑白相間的?黑色表示二進制的「1」,白色表示二進制的「0」
「我們之所以對二維碼進行掃描能讀出那麼多信息,就是因為這些信息被編入了二維碼之中。」黃海平說,「製作二維碼輸入的信息可以分成三類,文本信息,比如名片信息;字元信息,比如網址、電話號碼;還有圖片信息,甚至還可以包括簡短的視頻。」數據信息是怎麼被編入的呢?信息輸入後,首先要選擇一種信息編碼的碼制。現在常見的二維碼都是以QR碼作為編碼的碼制。QR碼是矩陣式二維碼,它是在一個矩形空間內,通過黑、白像素在矩陣中的不同分布,來進行編碼的。我們知道電腦使用二進制(0和1)數來貯存和處理數據,而在二維碼中,用黑白矩形表示二進制數據我們肉眼能看到的黑色表示的是二進制「1」,白色表示二進制的「0」,黑白的排列組合確定了矩陣式二維條碼的內容,以便於計算機對二維碼符號進行編碼和分析。
QR CODE 介紹:QR(Quick-Response) code是被廣泛使用的一種二維碼,解碼速度快。它可以存儲多用類型。如下圖時一個qrcode的基本結構,其中:位置探測圖形、位置探測圖形分隔符、定點陣圖形:用於對二維碼的定位,對每個QR碼來說,位置都是固定存在的,只是大小規格會有所差異;校正圖形:規格確定,校正圖形的數量和位置也就確定了;格式信息:表示改二維碼的糾錯級別,分為L、M、Q、H;版本信息:即二維碼的規格,QR碼符號共有40種規格的矩陣(一般為黑白色),從21x21(版本1),到177x177(版本40),每一版本符號比前一版本 每邊增加4個模塊。數據和糾錯碼字:實際保存的二維碼信息,和糾錯碼字(用於修正二維碼損壞帶來的錯誤)。
簡要的編碼過程:數據分析:確定編碼的字元類型,按相應的字元集轉換成符號字元; 選擇糾錯等級,在規格一定的條件下,糾錯等級越高其真實數據的容量越小。數據編碼:將數據字元轉換為位流,每8位一個碼字,整體構成一個數據的碼字序列。其實知道這個數據碼字序列就知道了二維碼的數據內容。
數據可以按照一種模式進行編碼,以便進行更高效的解碼,例如:對數據:01234567編碼(版本1-H),1)分組:012 345 672)轉成二進制:012→0000001100 345→0101011001 67 →10000113)轉成序列:0000001100 0101011001 10000114)字元數 轉成二進制:8→00000010005)加入模式指示符(上圖數字)0001:0001 0000001000 0000001100 0101011001 1000011對於字母、中文、日文等只是分組的方式、模式等內容有所區別。基本方法是一致的
糾錯編碼:按需要將上面的碼字序列分塊,並根據糾錯等級和分塊的碼字,產生糾錯碼字,並把糾錯碼字加入到數據碼字序列後面,成為一個新的序列。在二維碼規格和糾錯等級確定的情況下,其實它所能容納的碼字總數和糾錯碼字數也就確定了,比如:版本10,糾錯等級時H時,總共能容納346個碼字,其中224個糾錯碼字。就是說二維碼區域中大約1/3的碼字時冗餘的。對於這224個糾錯碼字,它能夠糾正112個替代錯誤(如黑白顛倒)或者224個據讀錯誤(無法讀到或者無法解碼),這樣糾錯容量為:112/346=32.4%
構造最終數據信息:在規格確定的條件下,將上面產生的序列按次序放如分塊中,按規定把數據分塊,然後對每一塊進行計算,得出相應的糾錯碼字區塊,把糾錯碼字區塊 按順序構成一個序列,添加到原先的數據碼字序列後面。如:D1, D12, D23, D35, D2, D13, D24, D36, ... D11, D22, D33, D45, D34, D46, E1, E23,E45, E67, E2, E24, E46, E68,...構造矩陣:將探測圖形、分隔符、定點陣圖形、校正圖形和碼字模塊放入矩陣中。
掩摸:將掩摸圖形用於符號的編碼區域,使得二維碼圖形中的深色和淺色(黑色和白色)區域能夠比率最優的分布。 一個演算法,不研究了,有興趣的同學可以繼續。格式和版本信息:生成格式和版本信息放入相應區域內。版本7-40都包含了版本信息,沒有版本信息的全為0。二維碼上兩個位置包含了版本信息,它們是冗餘的。版本信息共18位,6X3的矩陣,其中6位時數據為,如版本號8,數據位的信息時 001000,後面的12位是糾錯位。至此,二維碼的編碼流程基本完成了,下面就來實踐一下吧,當然不用自己再去編寫上面的演算法了,使用三方包zxing 就可以了編碼:public static void encode(String content, String format, String filePath) {try {Hashtable hints = new Hashtable();設置編碼類型hints.put(EncodeHintType.CHARACTER_SET, DEFAULT_ENCODING);編碼BitMatrix bitMatrix = new QRCodeWriter().encode(content,BarcodeFormat.QR_CODE, DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT,hints);輸出到文件,也可以輸出到流File file = new File(filePath);MatrixToImageWriter.writeToFile(bitMatrix, format, file);} catch (IOException e) {e.printStackTrace();} catch (WriterException e1) {e1.printStackTrace();}}解碼: BufferedImage image = ImageIO.read(file);讀取文件LuminanceSource source = new BufferedImageLuminanceSource(image);BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); 解碼Result result = new MultiFormatReader().decode(bitmap);String resultStr = result.getText(); System.out.println(resultStr);
二維碼 ,又稱二維條碼條形碼技術發展簡史 條形碼最早出現在40年代,但是得到實際應用和發展還是在70年代左右。現在世界上的各個國家和地區都已經普遍使用條形碼技術,而且它正在快速的向世界各地推廣,其應用領域越來越廣泛,並逐步滲透到許多技術領域。
早在40年代,美國喬·伍德蘭德(Joe Wood Land)和伯尼·西爾沃(Berny Silver)兩位工程師就開始研究用代碼表示食品項目及相應的自動識別設備,於1949年獲得了美國專利。該圖案很像微型射箭靶,被叫做「公牛眼」代碼。靶式的同心圓是由圓條和空繪成圓環形。在原理上,「公牛眼」代碼與後來的條形碼很相近,遺憾的是當時的工藝和商品經濟還沒有能力印製出這種碼。
然而,20年後喬·伍德蘭德作為IBM公司的工程師成為北美統一代碼UPC碼的奠基人。以吉拉德·費伊塞爾(Girard Fe- -ssel)為代表的幾名發明家,於1959年提請了一項專利,描述了數字0-9中每個數字可由七段平行條組成。但是這種碼使機器難以識讀,使人讀起來也不方便。不過這一構想的確促進了後來條形碼的產生於發展。 不久,E·F·布寧克(E·F·Brinker)申請了另一項專利,該專利是將條形碼標識在有軌電車上。
60年代後期西爾沃尼亞(Sylvania)發明的一個系統,被北美鐵路系統採納。這兩項可以說是條形碼技術最早期的應用。1970年美國超級市場Ad Hoc委員會制定出通用商品代碼UPC碼,許多團體也提出了各種條形碼符號方案,如上圖右下、左圖所示。UPC碼首先在雜貨零售業中試用,這為以後條形碼的統一和廣泛採用奠定了基礎。次年布萊西公司研製出布萊西碼及相應的自動識別系統,用以庫存驗算。這是條形碼技術第一次在倉庫管理系統中的實際應用。
1972年蒙那奇·馬金(Monarch Marking)等人研製出庫德巴(Code bar)碼,到此美國的條形碼技術進入新的發展階段。
1973年美國統一編碼協會(簡稱UCC)建立了UPC條形碼系統,實現了該碼制標准化。同年,食品雜貨業把UPC碼作為該行業的通用標准碼制,為條形碼技術在商業流通銷售領域里的廣泛應用,起到了積極的推動作用。
1974年Intermec公司的戴維·阿利爾(Davide·Allair)博士研製出39碼,很快被美國國防部所採納,作為 軍用條形碼碼制。39碼是第一個字母、數字式的條形碼,後來廣泛應用於工業領域。
1976年在美國和加拿大超級市場上,UPC碼的成功應用給人們以很大的鼓舞,尤其是歐洲人對此產生了極大興趣。次年,歐洲共同體在UPC-A碼基礎上制定出歐洲物品編碼EAN-13和EAN-8碼,簽署了「歐洲物品編碼」協議備忘錄,並正式成立了歐洲物品編碼協會(簡稱EAN)。
到了1981年由於EAN已經發展成為一個國際性組織,故改名為「國際物品編碼協會」,簡稱IAN。但由於歷史原因和習慣,至今仍稱為EAN。
日本從1974年開始著手建立POS系統,研究標准化以及信息輸入方式、印製技術等。並在EAN基礎上,於1978年制定出日本物品編碼JAN。同年加入了國際物品編碼協會,開始進行廠家登記注冊,並全面轉入條形碼技術及其系列產品的開發工作,10年之後成為EAN最大的用戶。
從80年代初,人們圍繞提高條形碼符號的信息密度,開展了多項研究。128碼和93碼就是其中的研究成果。128碼於1981年被推薦使用,而93碼於1982年使用。這兩種碼的優點是條形碼符號密度比39碼高出近30%。隨著條形碼技術的發展,條形碼碼制種類不斷增加,因而標准化問題顯得很突出。為此先後制定了軍用標准1189;交叉25碼、39碼和庫德巴碼ANSI標准MH10.8M等等。同時一些行業也開始建立行業標准,以適應發展需要。
此後,戴維·阿利爾又研製出49碼,這是一種非傳統的條形碼符號,它比以往的條形碼符號具有更高的密度。接著特德·威廉斯(Ted Williams)推出16K碼,這是一種適用於激光系統的碼制。到目前為止,共有40多種條形碼碼制,相應的自動識別設備和印刷技術也得到了長足的發展。
從80年代中期開始,我國一些高等院校、科研部門及一些出口企業,把條形碼技術的研究和推廣應用逐步提到議事日程。一些行業如圖書、郵電、物資管理部門和外貿部門已開始使用條形碼技術。在經濟全球化、信息網路化、生活國際化、文化國土化的資訊社會到來之時,起源於40年代、研究於60年代、應用於70年代、普及於80年代的條碼與條碼技術,及各種應用系統,引起世界流通領域里的大變革正風靡世界。 條碼作為一種可印製的計算機語言、未來學家稱之為「計算機文化」。
90年代的國際流通領域將條碼譽為商品進入國際計算機市場的「身份證」,使全世界對它刮目相看。 印刷在商品外包裝上的條碼,象一條條經濟信息紐帶將世界各地的生產製造商、出口商、批發商、零售商和顧客有機地聯系在一起。這一條條紐帶,一經與EDI系統相聯,便形成多項、多元的信息網,各種商品的相關信息猶如投入了一個無形的永不停息的自動導向傳送機構,流向世界各地,活躍在世界商品流通領域。