Skip to content

Instantly share code, notes, and snippets.

@iredun
Created October 23, 2015 12:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iredun/91789b4635c19445861d to your computer and use it in GitHub Desktop.
Save iredun/91789b4635c19445861d to your computer and use it in GitHub Desktop.
Генерирует штрих-код формата CODE 39, Пример использования www.example.com/code39.php?str=21010100745&width=400&height=200
<?
header ("Content-type: image/png");
$code = array();
$code['start'] = '1001011011010';
$code['1'] = '110100101011';
$code['2'] = '101100101011';
$code['3'] = '110110010101';
$code['4'] = '101001101011';
$code['5'] = '110100110101';
$code['6'] = '101100110101';
$code['7'] = '101001011011';
$code['8'] = '110100101101';
$code['9'] = '101100101101';
$code['0'] = '101001101101';
$code['A'] = '110101001011';
$code['B'] = '101101001011';
$code['C'] = '110110100101';
$code['D'] = '101011001011';
$code['E'] = '110101100101';
$code['F'] = '101101100101';
$code['G'] = '101010011011';
$code['H'] = '110101001101';
$code['I'] = '101101001101';
$code['J'] = '101011001101';
$code['K'] = '110101010011';
$code['L'] = '101101010011';
$code['M'] = '110110101001';
$code['N'] = '101011010011';
$code['O'] = '110101101001';
$code['P'] = '101101101001';
$code['Q'] = '101010110011';
$code['R'] = '110101011001';
$code['S'] = '101101011001';
$code['T'] = '101011011001';
$code['U'] = '110010101011';
$code['V'] = '100110101011';
$code['W'] = '110011010101';
$code['X'] = '100101101011';
$code['Y'] = '110010110101';
$code['Z'] = '100110110101';
$code['-'] = '100101011011';
$code['.'] = '110010101101';
$code[' '] = '100110101101';
$code['$'] = '100100100101';
$code['/'] = '100100101001';
$code['+'] = '100101001001';
$code['%'] = '101001001001';
$code['*'] = '100101101101';
$code['stop'] = '0100101101101';
$str = $code['start'];
$val = $_GET['str'];
for ($i = 0; $i <= strlen($val); $i++)
{
$str = $str . $code[$val[$i]] . '0';
}
$str = substr($str, 0, strlen($str)-1);
$str .= $code['stop'];
$padding = 20;
$width = $_GET['width'];
$width_block =round(($width - ($padding*2))/strlen($str),3);
$height = $_GET['height'];
$height_block = $height - $padding*3;
$im = ImageCreate ($width, $height) or die ("Ошибка при создании изображения");
$color_white=ImageColorAllocate ($im, 255, 255, 255);
$color_black=ImageColorAllocate ($im, 0, 0, 0);
for ($i = 0; $i < strlen($str); $i++)
{
if ($str[$i] == "0")
{
$line = ImageFilledRectangle ($im, $padding+$i*$width_block, $padding, $padding+($i+1)*$width_block, $padding+$height_block, $color_white);
}
else
{
$line = ImageFilledRectangle ($im, $padding+$i*$width_block, $padding, $padding+($i+1)*$width_block, $padding+$height_block, $color_black);
}
}
$val = substr($val, 0, 1).'.'.substr($val, 1, 3).'.'.substr($val, 4, 2).'.'.substr($val, 6, 5);
ImageString($im,4,$width/3,$height-$padding*1.5,$val,$color_black);
ImageColorTransparent ($im, $color_white);
ImagePng ($im);
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment