Potablog 1338.at Header

 
Da ich für ein Projekt Barcodes der Form Interleaved 2 of 5 brauche und die Schriftarten dafür erst ab 139 $ zu bekommen sind hab ich beschlossen das mit PHP und GD-Library selbst zu lösen.

Mit Hilfe von Nick Johnsons Site über Barcodes und spezifisch über I2O5 war es möglich das zu bekommen, was ich erreichen wollte:

Die Zahl 0930000153 wird umgewandelt in
Picture

Und sieht auch noch aus wie das Original, das ich nachzumachen versuchte.

Gelöst hab ich es wie folgt:
Die umzuwandelnde Zahl wird in 2 Zeichen lange Strings aufgespalten und diese in ein Array geschrieben. In einem anderen Array, dass 2 Indizes hat [0-9] und [0-4] steht jeweils drinnen ob es als ein breiter oder ein dünner Strich dargestellt werden soll - nach folgendem Schema.
Code0: nnwwn
1: wnnnw
2: nwnnw
3: wwnnn
4: nnwnw
5: wnwnn
6: nwwnn
7: nnnww
8: wnnwn
9: nwnwn

Wobei n für narrow als dünn und w für wide also dick steht.
Nun wird eine Schleife gestartet die von 0 bis 4 durchläuft und dabei wird der die erste Ziffer der 2 Ziffern die vorher in ein Array geschrieben wurden als Index genommen und die Schleifenzähler-Variable für den 2 Index.
Dann wird je nach Inhalt des 2. Arrays entweder ein dünner Senkrechter Strich, ein dünner Abstand, ein dicker Strich oder ein dicker Abstand in das Bild geschrieben.
Mit der 2. Zahl wird danach ebenso fortgefahren.

Code//create image
$width = "300";
$height = "40";
$img = ImageCreatetruecolor($width, $height) or die("Cannot Initialize new GD image stream");
if(!$img){
die("can't create picture");
}
$black = imagecolorallocate($img, 0, 0, 0);
$white = imagecolorallocate($img,255,255,255);
imagefill($img,0,0,$white);
$data = str_split("0930000153",2);
global $pos;
$pos = 1;
//startpattern
nline();
nspace();
nline();
nspace();
//eigentliche Daten
foreach($data as $data){
for($i=0;$i<=4;$i++){
call_user_func($digits[$data[0]][$i]."line");
call_user_func($digits[$data[1]][$i]."space");
}
}
//endpattern
wline();
nspace();
nline();
//show image
Header("Content-Type: image/png");
imagepng($img);
imagedestroy($img);
exit();

Wobei im Array $digits halt noch die o.g. Daten drinnenstehn.
Hoffe alle Unklarheit ist beseitigt.

Direktlink  Kommentare: 0 geschrieben von potassium am Montag, 23.02.2009, 18:41

Kommentar(e):
Es wurden noch keine (öffentlichen) Kommentare eingetragen.

Kommentar hinzufügen

Name*:
E-Mail-Adresse*: (Wird nicht veröffentlicht!)
WWW:


Text *:

HTML ist in den Kommentaren deaktiviert, alternativ können Sie aber (ausgewählte) bbCode-Befehle benutzen.

Privater Kommentar (Ist nur für den Autor des Eintrags lesbar.)
Benachrichtige mich, wenn es Antworten auf meinen Kommentar gibt.
Meine Eingaben merken.

Bitte geben Sie folgenden Antibot-Code ein:
Auth-Code
Antibot-Code*: