新聞中心

EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 二維碼 QR碼編碼原理詳解

二維碼 QR碼編碼原理詳解

作者: 時(shí)間:2013-01-01 來(lái)源:網(wǎng)絡(luò) 收藏

5.構(gòu)造矩陣:將探測(cè)圖形、分隔符、定位圖形、校正圖形和碼字模塊放入矩陣中。

11.jpg

把上面的完整序列填充到相應(yīng)規(guī)格的碼矩陣的區(qū)域中

6. 掩摸:將掩摸圖形用于符號(hào)的區(qū)域,使得碼圖形中的深色和淺色(黑色和白色)區(qū)域能夠比率最優(yōu)的分布。

一個(gè)算法,不研究了,有興趣的同學(xué)可以繼續(xù)。

7. 格式和版本信息:生成格式和版本信息放入相應(yīng)區(qū)域內(nèi)。

版本7-40都包含了版本信息,沒(méi)有版本信息的全為0。碼上兩個(gè)位置包含了版本信息,它們是冗余的。

版本信息共18位,6X3的矩陣,其中6位時(shí)數(shù)據(jù)為,如版本號(hào)8,數(shù)據(jù)位的信息時(shí) 001000,后面的12位是糾錯(cuò)位。

至此,二維碼的流程基本完成了,下面就來(lái)實(shí)踐一下吧,當(dāng)然不用自己再去編寫(xiě)上面的算法了,使用三方包zxing 就可以了。


public static void encode(String content, String format, String filePath) {
try {
Hashtable hints = new Hashtable();//設(shè)置編碼類(lèi)型
hints.put(EncodeHintType.CHARACTER_SET, DEFAULT_ENCODING);
//編碼
BitMatrix bitMatrix = new CodeWriter().encode(content,
BarcodeFormat._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);


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 詳解 原理 編碼 QR 二維

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉