" />

亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java實現(xiàn)二維碼生成的幾個方法(推薦)

 更新時間:2016年12月16日 09:27:03   作者:feiyu84  
本篇文章主要介紹了java實現(xiàn)二維碼生成的幾個方法(推薦),具有一定的參考價值,有興趣的可以了解一下。

java實現(xiàn)二維碼生成的幾個方法,具體如下:

1: 使用SwetakeQRCode在Java項目中生成二維碼

http://swetake.com/qr/ 下載地址

或著http://sourceforge.jp/projects/qrcode/downloads/28391/qrcode.zip

生成的是我們常見的方形的二維碼

可以用中文

如:5677777ghjjjjj

2: 使用BarCode4j生成條形碼和二維碼

BarCode4j網(wǎng)址:http://sourceforge.NET/projects/barcode4j/

barcode4j是使用datamatrix的二維碼生成算法,為支持qr的算法

datamatrix是歐美的標(biāo)準(zhǔn),qr為日本的標(biāo)準(zhǔn),

barcode4j一般生成出來是長方形的

如:88777alec000yan

3:zxing

zxing 這個是google的

下載地址 :http://code.google.com/p/zxing/downloads/list

Java代碼:

import java.io.File;  
import java.util.Hashtable;  
 
import com.google.zxing.BarcodeFormat;  
import com.google.zxing.EncodeHintType;  
import com.google.zxing.MultiFormatWriter;  
import com.google.zxing.client.j2se.MatrixToImageWriter;  
import com.google.zxing.common.BitMatrix;  
import com.google.zxing.qrcode.QRCodeWriter;  
 
 
 
public class QRCodeEvents {  
    
  public static void main(String []args)throws Exception{  
    String text = "你好";  
    int width = 100;  
    int height = 100;  
    String format = "png";  
    Hashtable hints= new Hashtable();  
    hints.put(EncodeHintType.CHARACTER_SET, "utf-8");  
     BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height,hints);  
     File outputFile = new File("new.png");  
     MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile);  
      
  }  
} 

4:google chart api就有實現(xiàn)二維碼的方法

 利用這個api,使用google appengine進(jìn)行實現(xiàn)。

 5:JS生成二維碼

使用jQuery-qrcode生成二維碼

先簡單說一下jquery-qrcode,這個開源的三方庫(可以從https://github.com/jeromeetienne/jquery-qrcode 獲?。?,

qrcode.js 是實現(xiàn)二維碼數(shù)據(jù)計算的核心類,

jquery.qrcode.js 是把它用jquery方式封裝起來的,用它來實現(xiàn)圖形渲染,其實就是畫圖(支持canvas和table兩種方式)

支持的功能主要有:

Js代碼:

text   : "https://github.com/jeromeetienne/jquery-qrcode" //設(shè)置二維碼內(nèi)容 

Js代碼:

render  : "canvas",//設(shè)置渲染方式  
width    : 256,   //設(shè)置寬度  
height   : 256,   //設(shè)置高度  
typeNumber : -1,   //計算模式  
correctLevel  : QRErrorCorrectLevel.H,//糾錯等級  
background   : "#ffffff",//背景顏色  
foreground   : "#000000" //前景顏色 

使用方式非常簡單

Js代碼:

jQuery('#output').qrcode({width:200,height:200,correctLevel:0,text:content}); 

經(jīng)過簡單實踐,

使用canvas方式渲染性能還是非常不錯的,但是如果用table方式,性能不太理想,特別是IE9以下的瀏覽器,所以需要自行優(yōu)化一下渲染table的方式,這里就不細(xì)述了。

其實上面的js有一個小小的缺點,就是默認(rèn)不支持中文。

這跟js的機(jī)制有關(guān)系,jquery-qrcode這個庫是采用 charCodeAt() 這個方式進(jìn)行編碼轉(zhuǎn)換的,

而這個方法默認(rèn)會獲取它的 Unicode 編碼,一般的解碼器都是采用UTF-8, ISO-8859-1等方式,

英文是沒有問題,如果是中文,一般情況下Unicode是UTF-16實現(xiàn),長度2位,而UTF-8編碼是3位,這樣二維碼的編解碼就不匹配了。

解決方式當(dāng)然是,在二維碼編碼前把字符串轉(zhuǎn)換成UTF-8,具體代碼如下:

function utf16to8(str) {  
  var out, i, len, c;  
  out = "";  
  len = str.length;  
  for(i = 0; i < len; i++) {  
  c = str.charCodeAt(i);  
  if ((c >= 0x0001) && (c <= 0x007F)) {  
    out += str.charAt(i);  
  } else if (c > 0x07FF) {  
    out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));  
    out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));  
    out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));  
  } else {  
    out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));  
    out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));  
  }  
  }  
  return out;  
} 

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

相關(guān)文章

  • Springboot在有鎖的情況下正確使用事務(wù)的實現(xiàn)代碼

    Springboot在有鎖的情況下正確使用事務(wù)的實現(xiàn)代碼

    這篇文章主要介紹了Springboot在有鎖的情況下如何正確使用事務(wù),今天通過一個實驗給大家分析一下商品超賣問題,模擬場景分析通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • Java高并發(fā)中的交換器Exchanger解析

    Java高并發(fā)中的交換器Exchanger解析

    這篇文章主要介紹了Java高并發(fā)中的交換器Exchanger解析,如果兩個線程并行處理,但在某個時刻需要互相交換自己已經(jīng)處理完的中間數(shù)據(jù),然后才能繼續(xù)往下執(zhí)行,這個時候就可以使用 Exchanger,需要的朋友可以參考下
    2023-12-12
  • 利用Java判斷一個字符串是否包含某個字符

    利用Java判斷一個字符串是否包含某個字符

    在Java編程中,字符串操作是日常開發(fā)的常見任務(wù),涉及判斷、查找、替換等多種操作,文章介紹了如何在Java中判斷字符串是否包含某字符,提供了使用contains方法和字符數(shù)組遍歷兩種基礎(chǔ)方法,需要的朋友可以參考下
    2024-11-11
  • java從list中取出對象并獲得其屬性值的方法

    java從list中取出對象并獲得其屬性值的方法

    這篇文章主要介紹了java從list中取出對象并獲得其屬性值的方法,大家參考使用
    2013-12-12
  • Elasticsearch聚合查詢概念及字段類型示例

    Elasticsearch聚合查詢概念及字段類型示例

    這篇文章主要為大家介紹了Elasticsearch聚合查詢概念及字段類型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • RestTemplate實現(xiàn)發(fā)送帶headers的GET請求

    RestTemplate實現(xiàn)發(fā)送帶headers的GET請求

    這篇文章主要介紹了RestTemplate實現(xiàn)發(fā)送帶headers的GET請求,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • java求最大公約數(shù)與最小公倍數(shù)的方法示例

    java求最大公約數(shù)與最小公倍數(shù)的方法示例

    這篇文章主要介紹了java求最大公約數(shù)與最小公倍數(shù)的方法,涉及java數(shù)值運算的相關(guān)操作技巧,并附帶分析了eclipse環(huán)境下設(shè)置運行輸入?yún)?shù)的相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • Spring Boot之搞定mongoTemplate的知識小結(jié)

    Spring Boot之搞定mongoTemplate的知識小結(jié)

    這篇文章主要介紹了Spring Boot之搞定mongoTemplate的知識小結(jié),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Java(JDK/Tomcat/Maven)運行環(huán)境配置及工具(idea/eclipse)安裝詳細(xì)教程

    Java(JDK/Tomcat/Maven)運行環(huán)境配置及工具(idea/eclipse)安裝詳細(xì)教程

    這篇文章主要介紹了Java(JDK/Tomcat/Maven)運行環(huán)境配置及工具(idea/eclipse)安裝,本文給大家介紹的非常想詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 排序算法圖解之Java插入排序

    排序算法圖解之Java插入排序

    插入排序是一種最簡單的排序方法,它的基本思想是將一個記錄插入到已經(jīng)排好序的有序表中,從而一個新的、記錄數(shù)增1的有序表。本文通過圖片合示例講解了插入排序的實現(xiàn),需要的可以了解一下
    2022-11-11

最新評論