bcode2.php
3.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
// ïðèíèìàåì ÷èñëî èëè ãåíåðèðóåì ñëó÷àéíûé êîä
$code_num = (integer)$_GET['num'] ? (integer)$_GET['num'] : rand(11111111, 99999999);
////// íàñòðîéêà /////////////////////////////////////////////////////////////
$height = 200;//100; // âûñîòà èçîáðàæåíèÿ (âñå ðàçìåðû - â ïèêñåëàõ)
$width = 80;//36; // øèðèíà èçîáðàæåíèÿ
GLOBAL $from_top;
$from_top = 2; // îòñòóï êîäà îò âåðõà èçîáðàæåíèÿ
define("BORDER",false); // ðèñîâàòü ðàìêó - äëÿ öåëåé îòëàäêè
define("FROM_LEFT",20); // îòñòóï ñëåâà
define("CODE_WIDTH", 250); // øèðèíà êîäà
define("FONT_HEIGHT",26); // âûñîòà øðèôòà öèôð êîäà + 1-2 ïèêñåëà
define("MODULE_WIDTH",2); // øèðèíà ìîäóëÿ øðèõ-êîäà â ïèêñåëàõ
///////////////////////////////////////////////////////////////////////////////
// îïðåäåëÿåì èñïîëüçóåìûå öâåòà
$im = ImageCreateTrueColor($width,$height);
GLOBAL $white;
$white = ImageColorAllocate($im, 255,255,255);
// öâåò ðàìêè
$blue = ImageColorAllocate($im, 199,223,250);
GLOBAL $black;
$black = ImageColorAllocate($im, 0,0,0);
ImageFill($im,0,0,$white);
// ðèñóåì ðàìêó
if(BORDER)
{
ImageLine($im, 0, 0, 0, $height, $blue);
ImageLine($im, 0, 0, $width, 0, $blue);
ImageLine($im,$width-1,0, $width-1,$height, $blue);
ImageLine($im,0,$height-1, $width,$height-1, $blue);
}
// ðèñóåì øòðèõ-êîä
// ìàññèâ ïîëîñîê-öèôð
$num[0] = "101010001110";
$num[1] = "101011100010";
$num[2] = "101000101110";
$num[3] = "111000101010";
$num[4] = "101110100010";
$num[5] = "111010100010";
$num[6] = "100010101110";
$num[7] = "100010111010";
$num[8] = "100011101010";
$num[9] = "111010001010";
//$num[10]= "10100010001110"; // êîä *
$num[10]= "100101101101";
// ôóíêöèÿ âûâîäà ïîëîñîê êîäà
function draw_line($im, $line_str,$number){
if($number=='11'){
ImageTTFText($im, 21, 270, FROM_LEFT, $GLOBALS['from_top']+2,$GLOBALS['black'],'./fonts/tahoma.ttf', "*" );
}else
if ($number != "10")
{
// âûâîäèì öèôðû íà øòðèõ-êîäå
ImageTTFText($im, 21, 270, FROM_LEFT, $GLOBALS['from_top']+2,$GLOBALS['black'],'./fonts/tahoma.ttf', $number );
$from_left = FROM_LEFT + FONT_HEIGHT;
}
else $from_left = FROM_LEFT;
for($j = 0; $j < strlen($line_str); $j++)
{
$sub_line = substr($line_str, $j,1);
if ($sub_line == "1") $line_color = $GLOBALS['black'];
else $line_color = $GLOBALS['white'];
for ($i = 1;$i <= MODULE_WIDTH; $i++)
{
//ImageLine($im,$from_left, $GLOBALS['from_top'], CODE_WIDTH + FROM_LEFT, $GLOBALS['from_top'], $line_color);
$GLOBALS['from_top']++;
}
}
}
//////////////////////// íà÷àëî âûâîäà øòðèõ-êîäà /////////////////////////////
// íà÷àëüíûé ñèìâîë
draw_line($im,$num[10],11);
// öèôðû êîäà
for ($i = 0; $i < strlen($code_num); $i++)
{
$number = (integer)substr($code_num, $i,1);
draw_line($im,$num[$number],$number);
}
// êîíå÷íûé ñèìâîë
draw_line($im,$num[10],11);
///////////////////////// êîíåö ãåíåðàöèè øòðèõ-êîäà /////////////////////////////
// âûâîäèì êàðòèíêó â áðàóçåð
Header('Content-type: image/png');
ImagePng($im);
// ...èëè ñîõðàíÿåì â ôàéë
// ImagePng($im, "barcode_$code_num.png");
ImageDestroy($im);
?>