Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CODE BARE!!!


Information sur la source

Catégorie :Tutoriaux Classé sous : Code, barre, image, en, php Niveau : Débutant Date de création : 15/07/2008 Date de mise à jour : 21/07/2008 13:22:15 Vu / téléchargé: 6 148 / 166

Note :
Aucune note

Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Je créé un code barre a 8 chiffres de manière entièrement aléatoire! je ne génère plus ce code en fonction de la date.
 

Source

  • <?php
  • $prefixe = $_GET['pre'];
  • $numero = $_GET['num'];
  • $digit = $_GET['dig'];
  • $codebarre = $prefixe.''.$numero.''.$digit;
  • // création de l'image
  • header ("Content-type: image/png");
  • $image = imagecreate(134,70);
  • // Définition des couleur dont le blanc est sélectionnée comme couleur de fond
  • $blanc = imagecolorallocate($image, 255, 255, 255);
  • $noir = imagecolorallocate($image, 0, 0, 0);
  • // Calcul de la valeur binaire du code sur 2 set
  • // Les 4 premier chiffre sur le set A
  • // Puis les 4 dernier sur le C
  • $i=0;
  • while ( $i <8 ) {
  • // Découpage de la chaine
  • if ( $i < 4 ) {
  • $chiffre_set_A = substr($codebarre,$i, 1);
  • }
  • if ( $i > 3 ) {
  • $chiffre_set_C = substr($codebarre,$i, 1);
  • }
  • // Calcul de la valeur
  • // Merci à schtroumf sur PHPCS pour son information!
  • switch ( $chiffre_set_A ) {
  • case '0';
  • $val = '0001101';
  • break;
  • case '1';
  • $val = '0011001';
  • break;
  • case '2';
  • $val = '0010011';
  • break;
  • case '3';
  • $val = '0111101';
  • break;
  • case '4';
  • $val = '0100011';
  • break;
  • case '5';
  • $val = '0110001';
  • break;
  • case '6';
  • $val = '0101111';
  • break;
  • case '7';
  • $val = '0111011';
  • break;
  • case '8';
  • $val = '0110111';
  • break;
  • case '9';
  • $val = '0001011';
  • break;
  • }
  • switch ( $chiffre_set_C ) {
  • case '0';
  • $val = '1110010';
  • break;
  • case '1';
  • $val = '1100110';
  • break;
  • case '2';
  • $val = '1101100';
  • break;
  • case '3';
  • $val = '1000010';
  • break;
  • case '4';
  • $val = '1011100';
  • break;
  • case '5';
  • $val = '1001110';
  • break;
  • case '6';
  • $val = '1010000';
  • break;
  • case '7';
  • $val = '1000100';
  • break;
  • case '8';
  • $val = '1001000';
  • break;
  • case '9';
  • $val = '1110100';
  • break;
  • }
  • // inscription de la traduction sur une variable $total
  • if ( $i == 0 ) {
  • $total .= '101'.$val;
  • }
  • else if ( $i == 4 ) {
  • $total .= '01010'.$val;
  • }
  • else if ( $i == 7 ) {
  • $total .= $val.'101';
  • }
  • else {
  • $total .= $val;
  • }
  • $i++;
  • }
  • // On compte le nombre de caractère
  • $count = strlen($total);
  • // Ce nombre doit être égale a 67 pour un code barre EAN8
  • if ( $count == 67 ) {
  • $j=0;
  • // Puis on déscine barre par barre
  • while ( $j < $count ) {
  • // Dabord on découpe la variable $total octet par octet
  • $barre = substr($total,$j, 1);
  • // Variables d'adaptation des barres
  • $m = $j*2;
  • $n = $m+2;
  • // Si les octets sont des séparateurs leurs hauteur est de 60
  • // sinon la hauteur des barres est de 50
  • if ( $j <=2 ) {
  • $hauteur = 60;
  • }
  • else if ( $j >31 AND $j < 37 ) {
  • $hauteur = 60;
  • }
  • else if ( $j > 63 ) {
  • $hauteur = 60;
  • }
  • else {
  • $hauteur = 50;
  • }
  • // Si $barre = 1 alors on dessinne une barre noir
  • // Sinon une barre blanche
  • if ( $barre == 1 ) {
  • $coul = $noir;
  • }
  • else {
  • $coul = $blanc;
  • }
  • ImageFilledRectangle ($image, $m, 0, $n, $hauteur, $coul);
  • $j++;
  • }
  • // Correction des erreurs de séparateurs
  • ImageFilledRectangle ($image, 6, 51, 62, 70, $blanc);
  • ImageFilledRectangle ($image, 74, 51, 100, 70, $blanc);
  • }
  • // On découpe ensuite le code en deux
  • $code1 = substr($codebarre,0, 4);
  • $code2 = substr($codebarre,4, 4);
  • // On l'inscrit sur notre image
  • imagestring($image, 8, 16, 52, $code1, $noir);
  • imagestring($image, 8, 84, 52, $code2, $noir);
  • imagepng($image);
  • ?>
<?php
$prefixe   = $_GET['pre'];
$numero    = $_GET['num'];
$digit     = $_GET['dig'];
$codebarre = $prefixe.''.$numero.''.$digit;
  //  création de l'image

header ("Content-type: image/png");
$image = imagecreate(134,70);

  //  Définition des couleur dont le blanc est sélectionnée comme couleur de fond

$blanc = imagecolorallocate($image, 255, 255, 255);
$noir = imagecolorallocate($image, 0, 0, 0);

  //  Calcul de la valeur binaire du code sur 2 set
  //  Les 4 premier chiffre sur le set A
  //  Puis les 4 dernier sur le C

$i=0;
while ( $i <8 ) {

  //  Découpage de la chaine

if ( $i < 4 ) {
$chiffre_set_A = substr($codebarre,$i, 1);
}
if ( $i > 3 ) {
$chiffre_set_C = substr($codebarre,$i, 1);
}

  //  Calcul de la valeur 
  //  Merci à schtroumf sur PHPCS pour son information!

switch ( $chiffre_set_A ) {
case '0';
$val = '0001101';
break;
case '1';
$val = '0011001';
break;
case '2';
$val = '0010011';
break;
case '3';
$val = '0111101';
break;
case '4';
$val = '0100011';
break;
case '5';
$val = '0110001';
break;
case '6';
$val = '0101111';
break;
case '7';
$val = '0111011';
break;
case '8';
$val = '0110111';
break;
case '9';
$val = '0001011';
break;
}
switch ( $chiffre_set_C ) {
case '0';
$val = '1110010';
break;
case '1';
$val = '1100110';
break;
case '2';
$val = '1101100';
break;
case '3';
$val = '1000010';
break;
case '4';
$val = '1011100';
break;
case '5';
$val = '1001110';
break;
case '6';
$val = '1010000';
break;
case '7';
$val = '1000100';
break;
case '8';
$val = '1001000';
break;
case '9';
$val = '1110100';
break;
}

  //  inscription de la traduction sur une variable $total

if ( $i == 0 ) {
$total .= '101'.$val;
}
else if ( $i == 4 ) {
$total .= '01010'.$val;
}
else if ( $i == 7 ) {
$total .= $val.'101';
}
else {
$total .= $val;
}
$i++;
}

  //  On compte le nombre de caractère

$count = strlen($total);

  //  Ce nombre doit être égale a 67 pour un code barre EAN8

if ( $count == 67 ) {
$j=0;

  //  Puis on déscine barre par barre

while ( $j < $count ) {

  //  Dabord on découpe la variable $total octet par octet

$barre = substr($total,$j, 1);

  //  Variables d'adaptation des barres

$m = $j*2;
$n = $m+2;

  //  Si les octets sont des séparateurs leurs hauteur est de 60
  //  sinon la hauteur des barres est de 50

if ( $j <=2 ) {
$hauteur = 60;
}
else if ( $j >31 AND $j < 37 ) {
$hauteur = 60;
}
else if ( $j > 63 ) {
$hauteur = 60;
}
else {
$hauteur = 50;
}

  //  Si $barre = 1 alors on dessinne une barre noir
  //  Sinon une barre blanche

if ( $barre == 1 ) {
$coul = $noir;
}
else {
$coul = $blanc;
}
ImageFilledRectangle ($image, $m, 0, $n, $hauteur, $coul);
$j++;
}

  //  Correction des erreurs de séparateurs

ImageFilledRectangle ($image, 6, 51, 62, 70, $blanc);
ImageFilledRectangle ($image, 74, 51, 100, 70, $blanc);
}

  //  On découpe ensuite le code en deux

$code1 = substr($codebarre,0, 4);
$code2 = substr($codebarre,4, 4);

  //  On l'inscrit sur notre image
imagestring($image, 8, 16, 52, $code1, $noir);
imagestring($image, 8, 84, 52, $code2, $noir);

imagepng($image);
?>

Conclusion

Dite moi ce que vous en pensez!
Je sait que je ne respecte pas les normes W3C Mais ce n'est qu'un exemple pour l'insérer dans un texte parceque sinon ca ne marche pas!
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

16 juillet 2008 10:16:41 :
Modification et mise a jour du code!
16 juillet 2008 10:16:43 :
Modification et mise a jour du code!
16 juillet 2008 10:23:30 :
Pas importante j'ai juste corriger une petite faute j'avais créé l'image en png et je l'apelai avec l'expention.gif donc j'ai corrigé ma faute!
21 juillet 2008 12:43:11 :
Ajout du zip! Mise enc onformitée du code barre!
21 juillet 2008 13:22:15 :
Modification du code

Commentaires et avis

signaler à un administrateur
Commentaire de pysco68 le 15/07/2008 14:46:13

bonjour,

en voyant la titre de ta source puis la longueur du code je me suis dit, "waou!", mais un coup d'½il un peux plus proche et puis un peux de déception....

Le code en lui-même est relativement propre, mais j'ai quelques trucs à déplorer...
* tu ne tiens pas compte de l'heure pour générer le code barre proprement dit...
* il n'y a aucun commentaire! donc même si un débutant regardait ta source en ce disant "cool j'ai un code barre!" il n'y comprendrais pas grand chose... sans copte le fait qu'il se trompe totalement en croyant que l'heure est encodée dans le code barre....

bref.... je ne mets pas de note pour l'instant, mais ça peut encore se faire... j'espère que tu profite de ma critique pour amméillorer ton code...

Bonne journée ;)

signaler à un administrateur
Commentaire de TheSin le 16/07/2008 09:52:33

Moi qui croyait que les barres étaient aléatoires suivant l'heure, mouais, dommage ...
Je croyais même que ça générait des codes barres alétoirement au vu de la variable $alea, mais je me suis trompé, les barres restent fixes et il n'y a que l'heure dessus qui chanche, je ne vois pas l'utilité, à part créer des formes dans une image et y insérer du texte :(.

"Je créé un code barre a 4 chiffre en fonction de l'heure!"
Et bien là, je dirais plutôt "j'affiche l'heure sur un code barre fixe!"

signaler à un administrateur
Commentaire de toutoos le 16/07/2008 09:54:49

J'avout que j'aurai pu commenter ma source mais je travail encore dessus donc pour le moment je laisse kom ca mais bon et je cherche un moyen pour ne plus travailler sur lh'eure mais avec les 8 dernier chiffre de la fonction time()! Je pense avoir plus de réussite avec cette fonction!

Puis j'aurai meme du dire que j'utilise l'heure pour générer le code barre!

signaler à un administrateur
Commentaire de toutoos le 16/07/2008 09:58:54

Thesin les barres bouges. c'est une image aléatoire je te ferai remarqué que je génére une variable "$size" pour la première barre et $sizen pour les suivantes aléatoirement ou l'épaisseur de la bare est compris entre 2et7?. Puis j'alterne noir et blanc! donc je ne peut pas dire que l'image est fixe avec un coee aléatoire!

signaler à un administrateur
Commentaire de TheSin le 16/07/2008 10:03:41

Ok, désolé, autant pour moi, c'est ta première variable $alea qui a obscurcie les autres, je retire ce que j'ai dit, toutes mes excuses ;-).
Bon dans ce cas, je te suggère juste une optimisation, il faudrait le lecteur qui va avec ;-).

signaler à un administrateur
Commentaire de toutoos le 16/07/2008 10:21:23

Voila la petite source totalement indépendante maintenant je pense travailler sur l'enregistrement de l'image!

Je pense avoir ma petit idée! vous allez voir on peut faire quelque chose de pas trop mal je pense!
bon je suis parti a coder! déposer déja vos pensée sur se petit bout de mon idée!

signaler à un administrateur
Commentaire de webdeb le 17/07/2008 22:47:46

Pourquoi ne pas avoir fait une fonction  ? En l'état ton code est presque inutilisable dans une application...

signaler à un administrateur
Commentaire de TheSin le 18/07/2008 10:24:19

En fait, moi je proposerais même en plus de transformer le code en une fonction bête et méchante, de supprimer le random pour pouvoir créer le code barre suivant un nombre (après tout, c'est plus logique, sinon à quoi te sert le code barre ?).

signaler à un administrateur
Commentaire de toutoos le 18/07/2008 14:57:55

Je vais y penser!

signaler à un administrateur
Commentaire de toutoos le 18/07/2008 23:06:18

Je bosse sur un moyen opur la création automatique d'un code bare! Avec une signification précises de lordre des barres ... Enfin vous medirez suivant le resultat!

signaler à un administrateur
Commentaire de toutoos le 18/07/2008 23:41:47

C'est pas de min que je vous posterai les mises a jour car j'ai des petit problème avec l'utilisation!

signaler à un administrateur
Commentaire de schtroumf le 21/07/2008 00:46:37

Bonjour,
En voyant ta source, la première question qui me vient à l'esprit est: quelle en est l'utilité ? Il est bien beau de créer un générateur de code barre mais si aucun lecteur ne sait les comprendre, ça perd un peu de son intérêt.
Pourquoi ne pas t'être essayé sur de vrais standard de code barre du type EAN8 ou EAN13 ?
Pour information il existe une très bonne source sur le même sujet qui respecte les normes ;) http://www.phpcs.com/code.aspx?ID=23927

Sinon, oui, c'est une source correcte pour commencer avec GD.
Petite question encore: à quoi ça sert de faire les lignes blanches sur un fond blanc ?

signaler à un administrateur
Commentaire de toutoos le 21/07/2008 09:43:23

Je fait des lignes blanche sur fond blanc car je trouve que c'est plus correcte et que je me suis di que étant donné la taille du script je povai me le permettre le ralentissement est casiment nul!

signaler à un administrateur
Commentaire de toutoos le 21/07/2008 11:04:54

Mon petit code est presque fini! Mais après avoir fini je vous demande votre avis puis j'en fait une joulie fonction!!!

signaler à un administrateur
Commentaire de schtroumf le 21/07/2008 17:01:50

Salut,
Je pense que tu aurais pu te dispenser des switch avec un code dans ce genre d'autant que faire un switch sur une variable non définie doit sûrement poser quelques problèmes si on est en E_ALL ;)

if(isset($chiffre_set_A))
{
$val_a = array('0001101','0011001','0010011','0111101','0100011','0110001','0101111','0111011','0110111','0001011');
$val = $val_a[$chiffre_set_A];
}
else
{
$val_c = array('1110010','1100110','1101100','1000010','1011100','1001110','1010000','1000100','1001000','1110100');
$val = $val_c[$chiffre_set_C];
}

Normalement les case prennent ":" à la fin et pas ";" ;)

signaler à un administrateur
Commentaire de toutoos le 22/07/2008 11:58:14

J'ai opté our le switch je ne sait pas pourquoi! Pour le array je ne sais pas encore! Je vais y réfléchir! et pour la case c'est une petite erreur que je vais corriger rapidement!

signaler à un administrateur
Commentaire de GRenard le 30/07/2008 20:22:22

Ce code suit-il un standard? je ne crois pas pouvoir le lire avec un lecteur n'est-ce pas?

Merci schtroumf d'avoir fait un lien vers ma source :) C'est gentil...

Mais moi aussi je fais du drawing de barre blanche sur fond blanc :D

signaler à un administrateur
Commentaire de toutoos le 31/07/2008 10:31:03

Parce que dessnner des barres blanches sur fond blanc semble plus logique.

Mais pour le lecteur je tourne en rond autour de la question et jme demande comment pourrait je faire!

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

PROBLEME GENERATION IMAGE AVEC GD !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [ par zzzzzz ] C'est desesperent! jen'arrive toujours pas a comprendre d'ou viens le prob depuis hier :(en fait j'ai un fichier code.php de contenue:&lt;?$nbr = rand PDF et image [ par DOUGGUI_PHP ] J'ai un problème assez criadre sur les images à insérer dans du pdf via php.Le code (pdf_place_image) ne marche pas et cela m'intrige.Je l'ai essayé p help pour .php?image=04 par exemple [ par ooiimm ] Salut j'aimerais savoir le code &#224; ins&#233;rer dans une page nomm&#233;e par exemple afficher.php Alors j'explique Ca serait une gallerie photo code + image [ par kalif ] bonjour alors ske je cherche est un peu bizzar mé ca doit pas etre trop dure voila sur mon site j'ai deux page index.htm et security.php index.htm javascript / html ===>PHP [ par boob3 ] Bonjour !J'ai un petit soucis de passage d'un code classique en php, pour l'affichage des images d'une base de donnéeCe code permet de faire passer un impression des barres codes [ par bigzo ] bonjour tout le monde,je dois introduire un module de code barre dans un script php.j ai pu acceder a des codes php permettant de generer des codes  b superposer 2 images [ par scyon ] Bonjour, alors voilà mon problème. Je voudrais tout simplement superposer deux images. d'une page, j'appelle la page image.php en lui passant les deux Erreur dans mon code [ par matthieugoua ] Bonjour voila j'essaye decrire une fonction dans un fichier PHP qui au survol d'une miniature d'image devrait m'afficher l'image en taille reel dans u Transfert d'info entre php et javascript [ par fregolo52 ] Bonjour,Je ne suis pas du tout un spécialiste du dév web, mais je dois apporter des évolutions à un site intranet.Mon but est d'afficher une treeview Récupérer du code html saisie dans un input [ par coba5 ] Bonjour,J'aimerai qu'un visiteur insere le lien d'une vidéo dans un formulaire, qu'il clique sur le bouton inserer la vidéo et que la vidéo s'affiche


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,014 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.