Soyez le premier à donner votre avis sur cette source.
Snippet vu 26 321 fois - Téléchargée 30 fois
<?php // code barre Code 39 // Le 27/05/2005 //Chacun des 43 caractères du mode simple se compose d'un motif fixe constitué de 5 barres noires et de 4 barres blanches (espace). //Les barres peuvent être fines ou larges (Les larges font 2,2 à 3 fois la largeur des fines) //Il y a toujours 3 barres larges parmi les 9 barres. //Une barre blanche fine ajoutée à la fin permet l'espacement avec le caractère suivant. //Un caractère spécial (Affecté au symbole *) sert de délimiteur de début et de fin. //Une clé de contrôle peut être ajoutée; elle est calculée en totalisant les valeurs de chaque caractère tirées du tableau suivant, puis en prenant le reste de la division de cette somme par 43. //Dans le tableau suivant les barres noires étroites sont symbolisées par "1", les larges par "111", les barres blanches étroites par "0" et les larges par "000". //Exemple de clé de contrôle pour : ZB65732 //35 + 11 + 6 +5 +7 +3 +2 = 69 //69 / 43 = 1, reste 26 qui correspond à la lettre Q //Nouveau code avec la clé : ZB65732Q // Merci à http://grandzebu.net/informatique/codbar/code39.htm pour l'explication ci-dessus //il suffit d'appeler le script: codebarre.php?texte=0123456789&h=80&L=2 if(isset($_GET['texte'])) { $text = $_GET['texte']; function str_split( $str ) { $arr = array(); for ($j = 0; $j < strlen($str); $j++) { $arr[] = substr($str,$j,1); } return $arr; } //echo $text; //putenv('GDFONTPATH=' . realpath($_GET['prof'].'../images/')); //putenv('GDFONTPATH='/home/.sites/143/site40/web/images/'); putenv('GDFONTPATH=' . realpath('.')); //echo realpath('.'); if(!isset($_GET['h'])) {$barcode_hauteur = 80; } else {$barcode_hauteur = $_GET['h'];} $tab['0']=' 101000111011101'; $tab2[0]='0'; $tab3['0']=0; $tab['F']='101110111000101'; $tab2[15]='F'; $tab3['F']=15; $tab['U']='111000101010111'; $tab2[30]='U'; $tab3['U']=30; $tab['1']=' 111010001010111'; $tab2[1]='1'; $tab3['1']=1; $tab['G']=' 101010001110111'; $tab2[16]='G'; $tab3['G']=16; $tab['V']='100011101010111'; $tab2[31]='V'; $tab3['V']=31; $tab['2']=' 101110001010111'; $tab2[2]='2'; $tab3['2']=2; $tab['H']=' 111010100011101'; $tab2[17]='H'; $tab3['H']=17; $tab['W']='111000111010101'; $tab2[32]='W'; $tab3['W']=32; $tab['3']=' 111011100010101'; $tab2[3]='3'; $tab3['3']=3; $tab['I']=' 101110100011101'; $tab2[18]='I'; $tab3['I']=18; $tab['X']='100010111010111'; $tab2[33]='X'; $tab3['X']=33; $tab['4']=' 101000111010111'; $tab2[4]='4'; $tab3['4']=4; $tab['J']=' 101011100011101'; $tab2[19]='J'; $tab3['J']=19; $tab['Y']='111000101110101'; $tab2[34]='Y'; $tab3['Y']=34; $tab['5']=' 111010001110101'; $tab2[5]='5'; $tab3['5']=5; $tab['K']=' 111010101000111'; $tab2[20]='K'; $tab3['K']=20; $tab['Z']='100011101110101'; $tab2[35]='Z'; $tab3['Z']=35; $tab['6']=' 101110001110101'; $tab2[6]='6'; $tab3['6']=6; $tab['L']=' 101110101000111'; $tab2[21]='L'; $tab3['L']=21; $tab['-']='100010101110111'; $tab2[36]='-'; $tab3['-']=36; $tab['7']='101000101110111'; $tab2[7]='7'; $tab3['7']=7; $tab['M']=' 111011101010001'; $tab2[22]='M'; $tab3['M']=22; $tab['.']='111000101011101'; $tab2[37]='.'; $tab3['.']=37; $tab['8']=' 111010001011101'; $tab2[8]='8'; $tab3['8']=8; $tab['N']=' 101011101000111'; $tab2[23]='N'; $tab3['N']=23; $tab[' ']='100011101011101'; $tab2[38]=' '; $tab3[' ']=38; $tab['9']=' 101110001011101'; $tab2[9]='9'; $tab3['9']=9; $tab['O']=' 111010111010001'; $tab2[24]='O'; $tab3['O']=24; $tab['$']='100010001000101'; $tab2[39]='$'; $tab3['$']=39; $tab['A']=' 111010100010111'; $tab2[10]='A'; $tab3['A']=10; $tab['P']=' 101110111010001'; $tab2[25]='P'; $tab3['P']=25; $tab['/']='100010001010001'; $tab2[40]='/'; $tab3['/']=40; $tab['B']='101110100010111'; $tab2[11]='B'; $tab3['B']=11; $tab['Q']='101010111000111'; $tab2[26]='Q'; $tab3['Q']=26; $tab['+']='100010100010001'; $tab2[41]='+'; $tab3['+']=41; $tab['C']='111011101000101'; $tab2[12]='C'; $tab3['C']=12; $tab['R']='111010101110001'; $tab2[27]='R'; $tab3['R']=27; $tab['%']='101000100010001'; $tab2[42]='%'; $tab3['%']=42; $tab['D']='101011100010111'; $tab2[13]='D'; $tab3['D']=13; $tab['S']='101110101110001'; $tab2[28]='S'; $tab3['S']=28; $tab['E']='111010111000101'; $tab2[14]='E'; $tab3['E']=14; $tab['T']='101011101110001'; $tab2[29]='T'; $tab3['T']=29; $tab['*']='100010111011101'; $j=0; $barcode= $tab['*'].'0'; foreach ( str_split( $text ) as $caractere ) { $barcode.= $tab[$caractere].'0'; $j+=$tab3[$caractere]; } // calcul du code de contôle $taille_police=5; $j=fmod($j, 43); $barcode.=$tab[$tab2[$j]].'0'; $barcode.=$tab['*'].'0'; $text='*'.$text.$tab2[$j].'*'; //barre détermine le nombre de pixel d'une barre //le coef est la différence de largeur entre les barres fines et les épaisse, il doit être entre 2,2 et 3 //mais vu qu'on travail avec de barres de 1 pixels les couples possibles sont // dimension 0 1 2 3 4 5 6 7 8 $tab=array( "barre"=>array(1, 2, 3, 4, 5, 6, 8, 9, 10), "coef"=> array(3, 3, 3, 3, 3, 3, 3, 3, 3)); //dimension permet de sélectionner une taille (largeur) dans le tableau ci-dessus if(!isset($_GET['L'])) {$dimension = 2; } else {$dimension = $_GET['L'];} $barre=$tab["barre"][$dimension]; $coef=$tab["coef"][$dimension]; //le nombre total de barre : 3 barres larges pour 6 fines plus 1 barre fine d'espacement $nbre=(3*$coef+6+1)*$barre; //le nombre de barre d'1 pixel (avec le code de contôle et le "*" à chaque extrémité) $barcode_longueur=strlen($barcode)*$barre; //creation de l'image $im = imagecreate($barcode_longueur,$barcode_hauteur); $white = imagecolorallocate($im, 255,255,255); $black = imagecolorallocate($im, 0,0,0); $font_hauteur = imagefontheight( $taille_police ); $font_largeur = imagefontwidth( $taille_police ); //détermination de la hauteur des barre $barcode_hauteur=$barcode_hauteur-$font_hauteur; //on construit chaque barre $xpos=0; foreach ( str_split($barcode) as $caractere ) { for($a=0; $a<$barre; $a++) { if ( $caractere == 0 ) { imageline( $im, $xpos, 0, $xpos, $barcode_hauteur, $white ); } else { imageline( $im, $xpos, 0, $xpos, $barcode_hauteur, $black ); } $xpos++; } } //on ajoute le texte lisible en dessous imagestring( $im, $taille_police,($barcode_longueur-$font_largeur*strlen($text))/2,$barcode_hauteur,$text,$black); //on finalise l'image header("Content-type: image/png"); imagepng($im); imagedestroy($im); } ?>
8 oct. 2011 à 13:40
7 oct. 2011 à 13:25
Je n'arrive pas à faire fonctionner le script.
Comment dois-je l'appeler exactement ?
Dans un autre fichier, par une balise img ?
Merci d'avance.
16 nov. 2007 à 09:10
Par contre sans les étoiles et la clef, tu risque d'avoir des erreurs de scan (peu mais possible)
16 nov. 2007 à 09:00
J'ai donc modifier ça :
$text='*'.$text.$tab2[$j].'*';
Par :
$text=''.$text.'';
Il m'affiche le meme code barre, sans les étoiles et sans la lettre, en faite cela ne chagera rien avec ou sans la modif, car le code barre est le même, a savoir si la douchette me ramenera l'etoile et la lettre ?
Merci ;)
14 nov. 2007 à 11:38
un code barre doit avoir un début, une fin (les *) et une clef de controle
(la lettre de fin est la clef de contrôle qui est un élément nécessaire pour les lecteurs de code barre : ça leur permet de "contrôler" et vérifier la validité de leur lecture)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.