原文網址:http://halladay5364.pixnet.net/blog/post/1932168-php%E8%A3%BD%E4%BD%9C%E4%B8%80%E7%B6%AD%E6%A2%9D%E7%A2%BC

以下轉載原文

---------------------------------------------------------------------------------

因為要直接從程式產生一維條碼,所以要靠自己寫

看了很多人寫的一維條碼的資料,終於看懂了

大部分超商都是使用" EAN-13 "

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

EAN-13碼(European Article Number,歐洲商品條碼)是1977年由歐洲十二個工業國家所共同發展出來的一種條碼系統,其後逐漸變成國際性的條碼系統,一般多用作商品標示條碼。其編碼特性如下: 

1. 資料只能為0~9之數字計12個,連同檢查碼共13碼。資料中包括國家代碼3碼、廠商代碼4碼、產品代碼5碼,為一種專用於商品標示的條碼。 
2. 編碼結構為〔護線+6個左資料碼+中線+5個右資料碼+檢查碼+護線〕,共佔119條線。其中在畫線時,護線和中線在下方均略長於資料碼,以便肉眼能明顯區分,但對於條碼機閱讀時並無差異。 
3. 左資料的編碼方式有A、B兩組之分,而資料的第一碼隱藏在左資料碼的編碼方式,故實際只編出12碼。以下為左資料依首碼所對應使用的編碼方式:

0 AAAAAA
1 AABABB
2 AABBAB
3 AABBBA
4 ABAABB
5 ABBAAB
6 ABBBAA
7 ABABAB
8 ABABBA
9 ABBABA 

4. 左資料的編碼方式,A組編碼為:

0 0001101
1 0011001
2 0010011
3 0111101
4 0100011
5 0110001
6 0101111
7 0111011
8 0110111
9 0001011

B組編碼為:

0 0100111
1 0110011
2 0011011
3 0100001
4 0011101
5 0111001
6 0000101
7 0010001
8 0001001
9 0010111

以上各位元0為白,1為黑。 

5. 護線固定為101,中線固定為01010,各位元0為白,1為黑。 
6. 右資料編碼方式固定為:

0 1110010
1 1100110
2 1101100
3 1000010
4 1011100
5 1001110
6 1010000
7 1000100
8 1001000
9 1110100

各位元0為白,1為黑。

驗證碼算法:

 

 國家代號(3位數) 中華民國的國家代號為471。
▲ 廠商代號(6位數) 由本會核發給廠商6位數的廠商代號。
 商品代號(3位數) 由廠商自行編定,按一物一號的原則,不同的 商品賦予不同的序號。(包裝、尺寸、顏色、 材質等不同,應視為不同的商品)
 檢核碼 按"10法則"的公式計算得之。
 
檢核碼計算方式
 
國家代號
廠商代號
商品
代號



位數
13
12
11
10
9
8
7
6
5
4
3
2
1
條碼編號
4
7
1
1
2
3
4
5
6
0
0
1
 
步驟一
偶位數數值相加乘3
7+1+3+5+0+1=17,17×3=51
步驟二
奇位數數值相加
4+1+2+4+6+0=17
步驟三
將步驟一與步驟三之和相加
51+17=68
步驟四
以10減去步驟三總和之個
位數,所得即為檢核碼
10-8=2→檢核碼
若步驟三總和的個位數為"0",
檢核碼即為"0"

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

實際範例:  4 714947 000196

從 開頭 471 可以得知 是台灣條碼

而從 4 知道 要用ABAABB (左資料的編碼方式有A、B兩組之分,而資料的第一碼隱藏在左資料碼的編碼方式)

 

  ABAABB  
4    
7 0111011 A
1 0110011 B
4 0100011 A
9 0001011 A
4 0011101 B
7 0010001 B
0 1110010  
0 1110010  
0 1110010  
1 1100110  
9 1110100  
6 1010000  
   

0為白

1為黑。 

依照以上的來畫線 就可以畫出來了。

編碼結構為〔護線+6個左資料碼+中線+5個右資料碼+檢查碼+護線〕,共佔119條線。其中在畫線時,護線和中線在下方均略長於資料碼,以便肉眼能明顯區分,但對於條碼機閱讀時並無差異。

護線固定為101,中線固定為01010,各位元0為白,1為黑。

將2邊加上

101 + 714947 + 01010 + 000196 + 101  (粗體為十進位,其他為二進位,請自行轉換十進位)

 

ex: 101011101101100110100011000101100010110011101001000101010111001011100101110010110011011101001010000

按照上面 0空白 1畫線 就可以畫出

一維條碼 


 

 

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

參考:

http://www.programmer-club.com.tw/ShowSameTitleN/general/7269.html

http://www.vixual.net/blog/archives/89

http://adc.cm.nsysu.edu.tw/barcode/1d_def.htm

http://tw.knowledge.yahoo.com/question/question?qid=1105052607348

創作者介紹
創作者 yoonow 的頭像
yoonow

右腦 想去環遊世界

yoonow 發表在 痞客邦 留言(0) 人氣()