// na p�gina que chamar a fun��o, informe o c�digo a ser gerado. a altura padr�o � 80 pixels

function barras($codigo,$altura = "80") {

// verifica se o comprimento � par, caso contr�rio, adiciona um zero no in�cio

if ((strlen($codigo)/2)!=intval(strlen($codigo)/2)){
$codigo = "0".$codigo;
}

// cada n�mero do c�digo � representado por cinco barras. o valor '2' representa uma barra fina. o valor '4' representa uma barra grossa

$barra = array("22442","42224","24224","44222","22424","42422","24422","22244","42242","24242");

// l� cada d�gito do c�digo a ser gerado, e monta o c�digo a partir da array $barra

$comprimento = strlen($codigo);
$aux = 0;
while ($aux<$comprimento){
$indice = $codigo{$aux};
$codigo2 = $codigo2.$barra[$indice];
$aux = $aux + 1;
}

// entrela�a o c�digo

$aux = 0;
while ($aux<($comprimento*5)){
$codigo3 = $codigo3.$codigo2{$aux}.$codigo2{$aux+5}.$codigo2{$aux+1}.$codigo2{$aux+6}.$codigo2{$aux+2}.$codigo2{$aux+7}.$codigo2{$aux+3}.$codigo2{$aux+8}.$codigo2{$aux+4}.$codigo2{$aux+9};
$aux = $aux + 10;
}

// adiciona os c�digos de in�cio e final

$codigofinal = "2222".$codigo3."422";

// monta o c�digo de barras, usando divs como barras

$comprimento = strlen($codigofinal);
$aux = 0;
while ($aux<$comprimento){
echo '<div style="position: relative; float: left; width:'.$codigofinal{$aux}.'px; height: '.$altura.'px; background-color: #000000;"></div><div style="position: relative; float: left; width:'.$codigofinal{$aux+1}.'px; height: '.$altura.'px; background-color: #ffffff;"></div>';
$aux = $aux + 2;
}

}