티스토리 뷰
<?
/*
여기서 ean-13, ean-8, upc-a코드는 맨끝자리 체크비트는
입력을 안한다.... upc-e코드는 체크비트까지 입력을 해야
나오니 이점 참고바람
ean-13 코드 : 바디소프트 8801008010099
ean-8 : 담배와 같은 코드 88006611
upc-a : 016000264595
upc-e : 스니커즈 04010702
# 이미지로 저장될때는 바코드의 값을 이름으로 가진다.
이거 해결하느라고 일주일동안 죽는줄 알았어용 ^^;
마지막으로 .... upc-e 코드의 체크비트 계산법을 아시는 분은 리플좀 달아주세요 ㅡㅡ;
다른코드는 해결했는데 이코드가 문제네용
*/
// Check validity of $code
/****************************
* EAN-13 Code (13자리) *
****************************/
function Code_Ean13($code) {
header ("Content-type: image/jpeg");
$IMG_ROOT = "/images/";
if (strlen($code) != 12) {
$im = @ImageCreate (304, 100) or die ("Cannot Initialize new GD image stream");
$bg = ImageColorAllocate ($im, 255, 255, 255);
$fg = ImageColorAllocate ($im, 0, 0, 0);
ImageString ($im, 5, 3, 10, "Code $code is not valid", $fg);
ImageString ($im, 5, 3, 30, "12 digits?", $fg);
ImagePng ($im);
break;
}
for ($i = 1; $i <= 12; $i++) {
if ((substr($code, $i-1, 1) <= 0) && ((substr($code, $i-1, 1) >= 9))) {
$im = @ImageCreate (304, 100) or die ("Cannot Initialize new GD image stream");
$bg = ImageColorAllocate ($im, 255, 255, 255);
$fg = ImageColorAllocate ($im, 0, 0, 0);
ImageString ($im, 5, 3, 10, "Code $code is not valid", $fg);
ImageString ($im, 5, 3, 30, "only digits!", $fg);
ImagePng ($im);
break;
}
}
// Define bitcode for Numbers
$left[0][O] = "0001101";
$left[0][E] = "0100111";
$left[1][O] = "0011001";
$left[1][E] = "0110011";
$left[2][O] = "0010011";
$left[2][E] = "0011011";
$left[3][O] = "0111101";
$left[3][E] = "0100001";
$left[4][O] = "0100011";
$left[4][E] = "0011101";
$left[5][O] = "0110001";
$left[5][E] = "0111001";
$left[6][O] = "0101111";
$left[6][E] = "0000101";
$left[7][O] = "0111011";
$left[7][E] = "0010001";
$left[8][O] = "0110111";
$left[8][E] = "0001001";
$left[9][O] = "0001011";
$left[9][E] = "0010111";
$right[0] = "1110010";
$right[1] = "1100110";
$right[2] = "1101100";
$right[3] = "1000010";
$right[4] = "1011100";
$right[5] = "1001110";
$right[6] = "1010000";
$right[7] = "1000100";
$right[8] = "1001000";
$right[9] = "1110100";
// Calculate Checksum
$oddeven = 1;
for ($i = 1; $i <= 12; $i++) {
$num = substr($code, $i-1, 1);
if ($oddeven == 1) {
$intsum = $num * $oddeven;
$extsum = $extsum + $intsum;
$oddeven = 3;
} else {
$intsum = $num * $oddeven;
$extsum = $extsum + $intsum;
$oddeven = 1;
}
}
$check = (floor($extsum/10)*10+10) - $extsum;
if ($check == 10) {
$check = 0;
}
$code = $code . $check;
// Build Array from $code string
for ($i = 1; $i <= 13; $i++) {
$c[$i] = substr($code, $i-1, 1);
}
// Set parity
switch( $c[1] ) {
case 0:
$parity = "OOOOO";
break;
case 1:
$parity = "OEOEE";
break;
case 2:
$parity = "OEEOE";
break;
case 3:
$parity = "OEEEO";
break;
case 4:
$parity = "EOOEE";
break;
case 5:
$parity = "EEOOEE";
break;
case 6:
$parity = "EEEOO";
break;
case 7:
$parity = "EOEOE";
break;
case 8:
$parity = "EOEEO";
break;
case 9:
$parity = "EEOEO";
break;
}
// Start generating bitcode for barcode
$barbit = "101"; // Startguard
$barbit = $barbit . $left[$c[2]][O]; // 2nd char is always odd
for ($i = 3; $i <= 7; $i++) { // generate first 5 digits with parity in bitcode
$par = substr($parity, $i - 3, 1);
$barbit = $barbit . $left[$c[$i]][$par];
}
$barbit = $barbit . "01010"; // Middleguard
for ($i = 8; $i <= 13; $i++) { // generate bitcode for 5 digits and 1 checksum
$barbit = $barbit . $right[$c[$i]];
}
$barbit = $barbit . "101"; // Endguard
// Create Image
$im = @ImageCreate (304, 100) or die ("Cannot Initialize new GD image stream");
$bg = ImageColorAllocate ($im, 255, 255, 255);
$fg = ImageColorAllocate ($im, 0, 0, 0);
$start = 14;
for ($i = 1; $i <= 95; $i++) {
$end = $start + 3;
$bit = substr($barbit, $i-1, 1);
if ($bit == 0) {
Imagefilledrectangle ($im, $start, 0, $end, 100, $bg);
} else {
Imagefilledrectangle ($im, $start, 0, $end, 100, $fg);
}
$start = $end;
}
Imagefilledrectangle ($im, 299, 0, 304, 100, $bg);
Imagefilledrectangle ($im, 23, 80, 148, 100, $bg);
Imagefilledrectangle ($im, 163, 80, 289, 100, $bg);
Imagefilledrectangle ($im, 0, 92, 304, 100, $bg);
ImageString ($im, 5, 3, 83, $c[1], $fg);
ImageString ($im, 5, 37, 83, "$c[2] $c[3] $c[4] $c[5] $c[6] $c[7]", $fg);
ImageString ($im, 5, 177, 83, "$c[8] $c[9] $c[10] $c[11] $c[12] $c[13]", $fg);
ImageJpeg($im, $code.".jpg");
copy($code.".jpg", $IMG_ROOT.$code.".jpg");
unlink($code.".jpg");
}
/****************************
* EAN-8 Code (8자리) *
****************************/
function Code_Ean8($code) {
header ("Content-type: image/jpeg");
$IMG_ROOT = "/images/";
$intsum = 0;
$extsum = 0;
$oddeven = 3;
for ($i = 1; $i <= 7; $i++) {
$num = substr($code, $i-1, 1);
if ($oddeven == 1) {
$intsum = $num * $oddeven;
$extsum = $extsum + $intsum;
$oddeven = 3;
} else {
$intsum = $num * $oddeven;
$extsum = $extsum + $intsum;
$oddeven = 1;
}
}
$check = (floor($extsum/10)*10+10) - $extsum;
if ($check == 10) {
$check = 0;
}
$code = $code . $check;
for ($i = 1; $i <= 8; $i++) {
$c[$i] = substr($code, $i-1, 1);
}
$barbit = "101"; //START
$left[0][O] = "0001101";
$left[1][O] = "0011001";
$left[2][O] = "0010011";
$left[3][O] = "0111101";
$left[4][O] = "0100011";
$left[5][O] = "0110001";
$left[6][O] = "0101111";
$left[7][O] = "0111011";
$left[8][O] = "0110111";
$left[9][O] = "0001011";
$right[0] = "1110010";
$right[1] = "1100110";
$right[2] = "1101100";
$right[3] = "1000010";
$right[4] = "1011100";
$right[5] = "1001110";
$right[6] = "1010000";
$right[7] = "1000100";
$right[8] = "1001000";
$right[9] = "1110100";
for ($i = 1; $i <= 4; $i++) { // 5 Digits
$num = substr($code, $i - 1, 1);
$barbit = $barbit . $left[$num][O];
}
$barbit = $barbit . "01010"; //Mittelteil
for ($i = 5; $i <= 8; $i++) { // 6 Digits
$num = substr($code, $i - 1, 1);
$barbit = $barbit . $right[$num];
}
$barbit = $barbit . "101";
$im = @ImageCreate (211, 100) or die ("Cannot Initialize new GD image stream");
$bg = ImageColorAllocate ($im, 255, 255, 255);
$fg = ImageColorAllocate ($im, 0, 0, 0);
$start = 5;
for ($i = 1; $i <= 95; $i++) {
$end = $start + 3;
$bit = substr($barbit, $i-1, 1);
if ($bit == 0) {
Imagefilledrectangle ($im, $start, 0, $end, 100, $bg);
} else {
Imagefilledrectangle ($im, $start, 0, $end, 100, $fg);
}
$start = $end;
}
Imagefilledrectangle ($im, 206, 0, 211, 100, $bg);
Imagefilledrectangle ($im, 14, 80, 98, 100, $bg);
Imagefilledrectangle ($im, 113, 80, 196, 100, $bg);
Imagefilledrectangle ($im, 0, 92, 211, 100, $bg);
ImageString ($im, 5, 25, 83, "$c[1] $c[2] $c[3] $c[4]", $fg);
ImageString ($im, 5, 124, 83, "$c[5] $c[6] $c[7] $c[8]", $fg);
ImageJpeg($im, $code.".jpg");
copy($code.".jpg", $IMG_ROOT.$code.".jpg");
unlink($code.".jpg");
}
/****************************
* UPC-A Code (12자리) *
****************************/
function Code_Upc_a($code) {
header ("Content-type: image/jpeg");
$IMG_ROOT = "/images/";
$save_code = $code;
$code = "0" . $code;
$intsum = 0;
$extsum = 0;
$oddeven = 1;
for ($i = 1; $i <= 12; $i++) {
$num = substr($code, $i-1, 1);
if ($oddeven == 1) {
$intsum = $num * $oddeven;
$extsum = $extsum + $intsum;
$oddeven = 3;
} else {
$intsum = $num * $oddeven;
$extsum = $extsum + $intsum;
$oddeven = 1;
}
}
$check = (floor($extsum/10)*10+10) - $extsum;
if ($check == 10) {
$check = 0;
}
$code = $code . $check;
$save_code = $save_code . $check;
for ($i = 1; $i <= 13; $i++) {
$c[$i] = substr($code, $i-1, 1);
}
$num = substr($code, 0, 1);
// Set parity
switch( $num ) {
case 0:
$parity = "OOOOO";
break;
case 1:
$parity = "OEOEE";
break;
case 2:
$parity = "OEEOE";
break;
case 3:
$parity = "OEEEO";
break;
case 4:
$parity = "EOOEE";
break;
case 5:
$parity = "EEOOEE";
break;
case 6:
$parity = "EEEOO";
break;
case 7:
$parity = "EOEOE";
break;
case 8:
$parity = "EOEEO";
break;
case 9:
$parity = "EEOEO";
break;
}
$barbit = "101"; //START
$left[0][O] = "0001101";
$left[0][E] = "0100111";
$left[1][O] = "0011001";
$left[1][E] = "0110011";
$left[2][O] = "0010011";
$left[2][E] = "0011011";
$left[3][O] = "0111101";
$left[3][E] = "0100001";
$left[4][O] = "0100011";
$left[4][E] = "0011101";
$left[5][O] = "0110001";
$left[5][E] = "0111001";
$left[6][O] = "0101111";
$left[6][E] = "0000101";
$left[7][O] = "0111011";
$left[7][E] = "0010001";
$left[8][O] = "0110111";
$left[8][E] = "0001001";
$left[9][O] = "0001011";
$left[9][E] = "0010111";
$right[0] = "1110010";
$right[1] = "1100110";
$right[2] = "1101100";
$right[3] = "1000010";
$right[4] = "1011100";
$right[5] = "1001110";
$right[6] = "1010000";
$right[7] = "1000100";
$right[8] = "1001000";
$right[9] = "1110100";
$num = substr($code, 1, 1); //Ziffer 2
$barbit = $barbit . $left[$num][O];
for ($i = 3; $i <= 7; $i++) { // 5 Digits
$num = substr($code, $i - 1, 1);
$par = substr($parity, $i - 3, 1);
$barbit = $barbit . $left[$num][$par];
}
$barbit = $barbit . "01010"; //Mittelteil
for ($i = 8; $i <= 13; $i++) { // 6 Digits
$num = substr($code, $i - 1, 1);
$barbit = $barbit . $right[$num];
}
$barbit = $barbit . "101";
$im = @ImageCreate (313, 100) or die ("Cannot Initialize new GD image stream");
$bg = ImageColorAllocate ($im, 255, 255, 255);
$fg = ImageColorAllocate ($im, 0, 0, 0);
$start = 14;
for ($i = 1; $i <= 95; $i++) {
$end = $start + 3;
$bit = substr($barbit, $i-1, 1);
if ($bit == 0) {
Imagefilledrectangle ($im, $start, 0, $end, 100, $bg);
} else {
Imagefilledrectangle ($im, $start, 0, $end, 100, $fg);
}
$start = $end;
}
Imagefilledrectangle ($im, 299, 0, 313, 100, $bg);
Imagefilledrectangle ($im, 44, 80, 148, 100, $bg);
Imagefilledrectangle ($im, 163, 80, 267, 100, $bg);
Imagefilledrectangle ($im, 0, 92, 313, 100, $bg);
ImageString ($im, 5, 3, 83, $c[2], $fg);
ImageString ($im, 5, 56, 83, "$c[3] $c[4] $c[5] $c[6] $c[7]", $fg);
ImageString ($im, 5, 175, 83, "$c[8] $c[9] $c[10] $c[11] $c[12]", $fg);
ImageString ($im, 5, 302, 83, $c[13], $fg);
ImageJpeg($im, $save_code.".jpg");
copy($save_code.".jpg", $IMG_ROOT.$save_code.".jpg");
unlink($save_code.".jpg");
}
/****************************
* UPC-E Code (8자리) *
****************************/
function Code_Upc_e($code) {
header ("Content-type: image/jpeg");
$IMG_ROOT = "/images/";
$save_code = $code;
$code = $code;
$intsum = 0;
$extsum = 0;
$oddeven = 1;
//인쇄할 바코드...
for ($i = 1; $i <= 9; $i++) {
$c[$i] = substr($code, $i-1, 1);
}
$code_len = strlen($code) - 1;
$num = substr($code, $code_len, 1);
// Set parity
switch( $num ) {
case 0:
$parity = "EEEOOO";
break;
case 1:
$parity = "EEOEOO";
break;
case 2:
$parity = "EEOOEO";
break;
case 3:
$parity = "EEOOOE";
break;
case 4:
$parity = "EOEEOO";
break;
case 5:
$parity = "EOOEEO";
break;
case 6:
$parity = "EOOOEE";
break;
case 7:
$parity = "EOEOEO";
break;
case 8:
$parity = "EOEOOE";
break;
case 9:
$parity = "EOOEOE";
break;
}
$barbit = "101"; //CODE START
$left[0][O] = "0001101";
$left[0][E] = "0100111";
$left[1][O] = "0011001";
$left[1][E] = "0110011";
$left[2][O] = "0010011";
$left[2][E] = "0011011";
$left[3][O] = "0111101";
$left[3][E] = "0100001";
$left[4][O] = "0100011";
$left[4][E] = "0011101";
$left[5][O] = "0110001";
$left[5][E] = "0111001";
$left[6][O] = "0101111";
$left[6][E] = "0000101";
$left[7][O] = "0111011";
$left[7][E] = "0010001";
$left[8][O] = "0110111";
$left[8][E] = "0001001";
$left[9][O] = "0001010";
$left[9][E] = "0010111";
for ($i = 2; $i <= 7; $i++) { // 6 Digits
$num = substr($code, $i - 1, 1);
$par = substr($parity, $i - 2, 1);
$barbit = $barbit . $left[$num][$par];
}
$barbit = $barbit . "010101"; //Mittelteil
$im = @ImageCreate (176, 100) or die ("Cannot Initialize new GD image stream");
$bg = ImageColorAllocate ($im, 255, 255, 255);
$fg = ImageColorAllocate ($im, 0, 0, 0);
$start = 10;
for ($i = 1; $i <= 95; $i++) {
$end = $start + 3;
$bit = substr($barbit, $i-1, 1);
if ($bit == 0) {
Imagefilledrectangle ($im, $start, 0, $end, 100, $bg);
} else {
Imagefilledrectangle ($im, $start, 0, $end, 100, $fg);
}
$start = $end;
}
//이미지를 생성( jpg ) 지정한 $IMG_ROOT폴더로 복사 후 현디렉토리에 생성된 이미지를 삭제한다.
Imagefilledrectangle ($im, 166, 0, 176, 100, $bg);
Imagefilledrectangle ($im, 24, 80, 152, 100, $bg);
Imagefilledrectangle ($im, 0, 92, 176, 100, $bg);
ImageString ($im, 5, 0, 83, $c[1], $fg);
ImageString ($im, 5, 30, 83, "$c[2] $c[3] $c[4] $c[5] $c[6] $c[7]", $fg);
ImageString ($im, 5, 166, 83, "$c[8]", $fg);
ImageJpeg($im, $save_code.".jpg");
copy($save_code.".jpg", $IMG_ROOT.$save_code.".jpg");
unlink($save_code.".jpg");
}
?>
/*
여기서 ean-13, ean-8, upc-a코드는 맨끝자리 체크비트는
입력을 안한다.... upc-e코드는 체크비트까지 입력을 해야
나오니 이점 참고바람
ean-13 코드 : 바디소프트 8801008010099
ean-8 : 담배와 같은 코드 88006611
upc-a : 016000264595
upc-e : 스니커즈 04010702
# 이미지로 저장될때는 바코드의 값을 이름으로 가진다.
이거 해결하느라고 일주일동안 죽는줄 알았어용 ^^;
마지막으로 .... upc-e 코드의 체크비트 계산법을 아시는 분은 리플좀 달아주세요 ㅡㅡ;
다른코드는 해결했는데 이코드가 문제네용
*/
// Check validity of $code
/****************************
* EAN-13 Code (13자리) *
****************************/
function Code_Ean13($code) {
header ("Content-type: image/jpeg");
$IMG_ROOT = "/images/";
if (strlen($code) != 12) {
$im = @ImageCreate (304, 100) or die ("Cannot Initialize new GD image stream");
$bg = ImageColorAllocate ($im, 255, 255, 255);
$fg = ImageColorAllocate ($im, 0, 0, 0);
ImageString ($im, 5, 3, 10, "Code $code is not valid", $fg);
ImageString ($im, 5, 3, 30, "12 digits?", $fg);
ImagePng ($im);
break;
}
for ($i = 1; $i <= 12; $i++) {
if ((substr($code, $i-1, 1) <= 0) && ((substr($code, $i-1, 1) >= 9))) {
$im = @ImageCreate (304, 100) or die ("Cannot Initialize new GD image stream");
$bg = ImageColorAllocate ($im, 255, 255, 255);
$fg = ImageColorAllocate ($im, 0, 0, 0);
ImageString ($im, 5, 3, 10, "Code $code is not valid", $fg);
ImageString ($im, 5, 3, 30, "only digits!", $fg);
ImagePng ($im);
break;
}
}
// Define bitcode for Numbers
$left[0][O] = "0001101";
$left[0][E] = "0100111";
$left[1][O] = "0011001";
$left[1][E] = "0110011";
$left[2][O] = "0010011";
$left[2][E] = "0011011";
$left[3][O] = "0111101";
$left[3][E] = "0100001";
$left[4][O] = "0100011";
$left[4][E] = "0011101";
$left[5][O] = "0110001";
$left[5][E] = "0111001";
$left[6][O] = "0101111";
$left[6][E] = "0000101";
$left[7][O] = "0111011";
$left[7][E] = "0010001";
$left[8][O] = "0110111";
$left[8][E] = "0001001";
$left[9][O] = "0001011";
$left[9][E] = "0010111";
$right[0] = "1110010";
$right[1] = "1100110";
$right[2] = "1101100";
$right[3] = "1000010";
$right[4] = "1011100";
$right[5] = "1001110";
$right[6] = "1010000";
$right[7] = "1000100";
$right[8] = "1001000";
$right[9] = "1110100";
// Calculate Checksum
$oddeven = 1;
for ($i = 1; $i <= 12; $i++) {
$num = substr($code, $i-1, 1);
if ($oddeven == 1) {
$intsum = $num * $oddeven;
$extsum = $extsum + $intsum;
$oddeven = 3;
} else {
$intsum = $num * $oddeven;
$extsum = $extsum + $intsum;
$oddeven = 1;
}
}
$check = (floor($extsum/10)*10+10) - $extsum;
if ($check == 10) {
$check = 0;
}
$code = $code . $check;
// Build Array from $code string
for ($i = 1; $i <= 13; $i++) {
$c[$i] = substr($code, $i-1, 1);
}
// Set parity
switch( $c[1] ) {
case 0:
$parity = "OOOOO";
break;
case 1:
$parity = "OEOEE";
break;
case 2:
$parity = "OEEOE";
break;
case 3:
$parity = "OEEEO";
break;
case 4:
$parity = "EOOEE";
break;
case 5:
$parity = "EEOOEE";
break;
case 6:
$parity = "EEEOO";
break;
case 7:
$parity = "EOEOE";
break;
case 8:
$parity = "EOEEO";
break;
case 9:
$parity = "EEOEO";
break;
}
// Start generating bitcode for barcode
$barbit = "101"; // Startguard
$barbit = $barbit . $left[$c[2]][O]; // 2nd char is always odd
for ($i = 3; $i <= 7; $i++) { // generate first 5 digits with parity in bitcode
$par = substr($parity, $i - 3, 1);
$barbit = $barbit . $left[$c[$i]][$par];
}
$barbit = $barbit . "01010"; // Middleguard
for ($i = 8; $i <= 13; $i++) { // generate bitcode for 5 digits and 1 checksum
$barbit = $barbit . $right[$c[$i]];
}
$barbit = $barbit . "101"; // Endguard
// Create Image
$im = @ImageCreate (304, 100) or die ("Cannot Initialize new GD image stream");
$bg = ImageColorAllocate ($im, 255, 255, 255);
$fg = ImageColorAllocate ($im, 0, 0, 0);
$start = 14;
for ($i = 1; $i <= 95; $i++) {
$end = $start + 3;
$bit = substr($barbit, $i-1, 1);
if ($bit == 0) {
Imagefilledrectangle ($im, $start, 0, $end, 100, $bg);
} else {
Imagefilledrectangle ($im, $start, 0, $end, 100, $fg);
}
$start = $end;
}
Imagefilledrectangle ($im, 299, 0, 304, 100, $bg);
Imagefilledrectangle ($im, 23, 80, 148, 100, $bg);
Imagefilledrectangle ($im, 163, 80, 289, 100, $bg);
Imagefilledrectangle ($im, 0, 92, 304, 100, $bg);
ImageString ($im, 5, 3, 83, $c[1], $fg);
ImageString ($im, 5, 37, 83, "$c[2] $c[3] $c[4] $c[5] $c[6] $c[7]", $fg);
ImageString ($im, 5, 177, 83, "$c[8] $c[9] $c[10] $c[11] $c[12] $c[13]", $fg);
ImageJpeg($im, $code.".jpg");
copy($code.".jpg", $IMG_ROOT.$code.".jpg");
unlink($code.".jpg");
}
/****************************
* EAN-8 Code (8자리) *
****************************/
function Code_Ean8($code) {
header ("Content-type: image/jpeg");
$IMG_ROOT = "/images/";
$intsum = 0;
$extsum = 0;
$oddeven = 3;
for ($i = 1; $i <= 7; $i++) {
$num = substr($code, $i-1, 1);
if ($oddeven == 1) {
$intsum = $num * $oddeven;
$extsum = $extsum + $intsum;
$oddeven = 3;
} else {
$intsum = $num * $oddeven;
$extsum = $extsum + $intsum;
$oddeven = 1;
}
}
$check = (floor($extsum/10)*10+10) - $extsum;
if ($check == 10) {
$check = 0;
}
$code = $code . $check;
for ($i = 1; $i <= 8; $i++) {
$c[$i] = substr($code, $i-1, 1);
}
$barbit = "101"; //START
$left[0][O] = "0001101";
$left[1][O] = "0011001";
$left[2][O] = "0010011";
$left[3][O] = "0111101";
$left[4][O] = "0100011";
$left[5][O] = "0110001";
$left[6][O] = "0101111";
$left[7][O] = "0111011";
$left[8][O] = "0110111";
$left[9][O] = "0001011";
$right[0] = "1110010";
$right[1] = "1100110";
$right[2] = "1101100";
$right[3] = "1000010";
$right[4] = "1011100";
$right[5] = "1001110";
$right[6] = "1010000";
$right[7] = "1000100";
$right[8] = "1001000";
$right[9] = "1110100";
for ($i = 1; $i <= 4; $i++) { // 5 Digits
$num = substr($code, $i - 1, 1);
$barbit = $barbit . $left[$num][O];
}
$barbit = $barbit . "01010"; //Mittelteil
for ($i = 5; $i <= 8; $i++) { // 6 Digits
$num = substr($code, $i - 1, 1);
$barbit = $barbit . $right[$num];
}
$barbit = $barbit . "101";
$im = @ImageCreate (211, 100) or die ("Cannot Initialize new GD image stream");
$bg = ImageColorAllocate ($im, 255, 255, 255);
$fg = ImageColorAllocate ($im, 0, 0, 0);
$start = 5;
for ($i = 1; $i <= 95; $i++) {
$end = $start + 3;
$bit = substr($barbit, $i-1, 1);
if ($bit == 0) {
Imagefilledrectangle ($im, $start, 0, $end, 100, $bg);
} else {
Imagefilledrectangle ($im, $start, 0, $end, 100, $fg);
}
$start = $end;
}
Imagefilledrectangle ($im, 206, 0, 211, 100, $bg);
Imagefilledrectangle ($im, 14, 80, 98, 100, $bg);
Imagefilledrectangle ($im, 113, 80, 196, 100, $bg);
Imagefilledrectangle ($im, 0, 92, 211, 100, $bg);
ImageString ($im, 5, 25, 83, "$c[1] $c[2] $c[3] $c[4]", $fg);
ImageString ($im, 5, 124, 83, "$c[5] $c[6] $c[7] $c[8]", $fg);
ImageJpeg($im, $code.".jpg");
copy($code.".jpg", $IMG_ROOT.$code.".jpg");
unlink($code.".jpg");
}
/****************************
* UPC-A Code (12자리) *
****************************/
function Code_Upc_a($code) {
header ("Content-type: image/jpeg");
$IMG_ROOT = "/images/";
$save_code = $code;
$code = "0" . $code;
$intsum = 0;
$extsum = 0;
$oddeven = 1;
for ($i = 1; $i <= 12; $i++) {
$num = substr($code, $i-1, 1);
if ($oddeven == 1) {
$intsum = $num * $oddeven;
$extsum = $extsum + $intsum;
$oddeven = 3;
} else {
$intsum = $num * $oddeven;
$extsum = $extsum + $intsum;
$oddeven = 1;
}
}
$check = (floor($extsum/10)*10+10) - $extsum;
if ($check == 10) {
$check = 0;
}
$code = $code . $check;
$save_code = $save_code . $check;
for ($i = 1; $i <= 13; $i++) {
$c[$i] = substr($code, $i-1, 1);
}
$num = substr($code, 0, 1);
// Set parity
switch( $num ) {
case 0:
$parity = "OOOOO";
break;
case 1:
$parity = "OEOEE";
break;
case 2:
$parity = "OEEOE";
break;
case 3:
$parity = "OEEEO";
break;
case 4:
$parity = "EOOEE";
break;
case 5:
$parity = "EEOOEE";
break;
case 6:
$parity = "EEEOO";
break;
case 7:
$parity = "EOEOE";
break;
case 8:
$parity = "EOEEO";
break;
case 9:
$parity = "EEOEO";
break;
}
$barbit = "101"; //START
$left[0][O] = "0001101";
$left[0][E] = "0100111";
$left[1][O] = "0011001";
$left[1][E] = "0110011";
$left[2][O] = "0010011";
$left[2][E] = "0011011";
$left[3][O] = "0111101";
$left[3][E] = "0100001";
$left[4][O] = "0100011";
$left[4][E] = "0011101";
$left[5][O] = "0110001";
$left[5][E] = "0111001";
$left[6][O] = "0101111";
$left[6][E] = "0000101";
$left[7][O] = "0111011";
$left[7][E] = "0010001";
$left[8][O] = "0110111";
$left[8][E] = "0001001";
$left[9][O] = "0001011";
$left[9][E] = "0010111";
$right[0] = "1110010";
$right[1] = "1100110";
$right[2] = "1101100";
$right[3] = "1000010";
$right[4] = "1011100";
$right[5] = "1001110";
$right[6] = "1010000";
$right[7] = "1000100";
$right[8] = "1001000";
$right[9] = "1110100";
$num = substr($code, 1, 1); //Ziffer 2
$barbit = $barbit . $left[$num][O];
for ($i = 3; $i <= 7; $i++) { // 5 Digits
$num = substr($code, $i - 1, 1);
$par = substr($parity, $i - 3, 1);
$barbit = $barbit . $left[$num][$par];
}
$barbit = $barbit . "01010"; //Mittelteil
for ($i = 8; $i <= 13; $i++) { // 6 Digits
$num = substr($code, $i - 1, 1);
$barbit = $barbit . $right[$num];
}
$barbit = $barbit . "101";
$im = @ImageCreate (313, 100) or die ("Cannot Initialize new GD image stream");
$bg = ImageColorAllocate ($im, 255, 255, 255);
$fg = ImageColorAllocate ($im, 0, 0, 0);
$start = 14;
for ($i = 1; $i <= 95; $i++) {
$end = $start + 3;
$bit = substr($barbit, $i-1, 1);
if ($bit == 0) {
Imagefilledrectangle ($im, $start, 0, $end, 100, $bg);
} else {
Imagefilledrectangle ($im, $start, 0, $end, 100, $fg);
}
$start = $end;
}
Imagefilledrectangle ($im, 299, 0, 313, 100, $bg);
Imagefilledrectangle ($im, 44, 80, 148, 100, $bg);
Imagefilledrectangle ($im, 163, 80, 267, 100, $bg);
Imagefilledrectangle ($im, 0, 92, 313, 100, $bg);
ImageString ($im, 5, 3, 83, $c[2], $fg);
ImageString ($im, 5, 56, 83, "$c[3] $c[4] $c[5] $c[6] $c[7]", $fg);
ImageString ($im, 5, 175, 83, "$c[8] $c[9] $c[10] $c[11] $c[12]", $fg);
ImageString ($im, 5, 302, 83, $c[13], $fg);
ImageJpeg($im, $save_code.".jpg");
copy($save_code.".jpg", $IMG_ROOT.$save_code.".jpg");
unlink($save_code.".jpg");
}
/****************************
* UPC-E Code (8자리) *
****************************/
function Code_Upc_e($code) {
header ("Content-type: image/jpeg");
$IMG_ROOT = "/images/";
$save_code = $code;
$code = $code;
$intsum = 0;
$extsum = 0;
$oddeven = 1;
//인쇄할 바코드...
for ($i = 1; $i <= 9; $i++) {
$c[$i] = substr($code, $i-1, 1);
}
$code_len = strlen($code) - 1;
$num = substr($code, $code_len, 1);
// Set parity
switch( $num ) {
case 0:
$parity = "EEEOOO";
break;
case 1:
$parity = "EEOEOO";
break;
case 2:
$parity = "EEOOEO";
break;
case 3:
$parity = "EEOOOE";
break;
case 4:
$parity = "EOEEOO";
break;
case 5:
$parity = "EOOEEO";
break;
case 6:
$parity = "EOOOEE";
break;
case 7:
$parity = "EOEOEO";
break;
case 8:
$parity = "EOEOOE";
break;
case 9:
$parity = "EOOEOE";
break;
}
$barbit = "101"; //CODE START
$left[0][O] = "0001101";
$left[0][E] = "0100111";
$left[1][O] = "0011001";
$left[1][E] = "0110011";
$left[2][O] = "0010011";
$left[2][E] = "0011011";
$left[3][O] = "0111101";
$left[3][E] = "0100001";
$left[4][O] = "0100011";
$left[4][E] = "0011101";
$left[5][O] = "0110001";
$left[5][E] = "0111001";
$left[6][O] = "0101111";
$left[6][E] = "0000101";
$left[7][O] = "0111011";
$left[7][E] = "0010001";
$left[8][O] = "0110111";
$left[8][E] = "0001001";
$left[9][O] = "0001010";
$left[9][E] = "0010111";
for ($i = 2; $i <= 7; $i++) { // 6 Digits
$num = substr($code, $i - 1, 1);
$par = substr($parity, $i - 2, 1);
$barbit = $barbit . $left[$num][$par];
}
$barbit = $barbit . "010101"; //Mittelteil
$im = @ImageCreate (176, 100) or die ("Cannot Initialize new GD image stream");
$bg = ImageColorAllocate ($im, 255, 255, 255);
$fg = ImageColorAllocate ($im, 0, 0, 0);
$start = 10;
for ($i = 1; $i <= 95; $i++) {
$end = $start + 3;
$bit = substr($barbit, $i-1, 1);
if ($bit == 0) {
Imagefilledrectangle ($im, $start, 0, $end, 100, $bg);
} else {
Imagefilledrectangle ($im, $start, 0, $end, 100, $fg);
}
$start = $end;
}
//이미지를 생성( jpg ) 지정한 $IMG_ROOT폴더로 복사 후 현디렉토리에 생성된 이미지를 삭제한다.
Imagefilledrectangle ($im, 166, 0, 176, 100, $bg);
Imagefilledrectangle ($im, 24, 80, 152, 100, $bg);
Imagefilledrectangle ($im, 0, 92, 176, 100, $bg);
ImageString ($im, 5, 0, 83, $c[1], $fg);
ImageString ($im, 5, 30, 83, "$c[2] $c[3] $c[4] $c[5] $c[6] $c[7]", $fg);
ImageString ($im, 5, 166, 83, "$c[8]", $fg);
ImageJpeg($im, $save_code.".jpg");
copy($save_code.".jpg", $IMG_ROOT.$save_code.".jpg");
unlink($save_code.".jpg");
}
?>
'프로그래밍 > PHP' 카테고리의 다른 글
php-소켓클래스(데모) (0) | 2008.06.22 |
---|---|
php 소켓 클래스(설명) (0) | 2008.06.22 |
금액(문자) -> 숫자로 변환 함수 (0) | 2008.06.22 |
PHP RSS Reader [RSS 2.0] (0) | 2008.06.17 |
php의 oop 지원형태 (0) | 2008.06.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크