<?php 
function set_4pixel($r, $g, $b, $x, $y) 
{ 
global $sx, $sy, $pixels; 
$ofs = 3 * ($sx * $y + $x); 
$pixels[$ofs] = chr($r); 
$pixels[$ofs + 1] = chr($g); 
$pixels[$ofs + 2] = chr($b); 
$pixels[$ofs + 3] = chr($r); 
$pixels[$ofs + 4] = chr($g); 
$pixels[$ofs + 5] = chr($b); 
$ofs += 3 * $sx; 
$pixels[$ofs] = chr($r); 
$pixels[$ofs + 1] = chr($g); 
$pixels[$ofs + 2] = chr($b); 
$pixels[$ofs + 3] = chr($r); 
$pixels[$ofs + 4] = chr($g); 
$pixels[$ofs + 5] = chr($b); 
} 
//生成数字图象的函数 
function draw2digits($x, $y, $number) 
{ 
draw_digit($x, $y, (int) ($number / 10)); 
draw_digit($x + 11, $y, $number % 10); 
} 
function draw_digit($x, $y, $digit) 
{ 
global $sx, $sy, $pixels, $digits, $lines; 
$digit = $digits[$digit]; 
$m = 8; 
for ($b = 1, $i = 0; $i < 7; $i++, $b *= 2) { 
if (($b & $digit) == $b) { 
$j = $i * 4; 
$x0 = $lines[$j] * $m + $x; 
$y0 = $lines[$j + 1] * $m + $y; 
$x1 = $lines[$j + 2] * $m + $x; 
$y1 = $lines[$j + 3] * $m + $y; 
if ($x0 == $x1) { 
$ofs = 3 * ($sx * $y0 + $x0); 
for ($h = $y0; $h <= $y1; $h++, $ofs += 3 * $sx) { 
$pixels[$ofs] = chr(0); 
$pixels[$ofs + 1] = chr(0); 
$pixels[$ofs + 2] = chr(0); 
} 
} else { 
$ofs = 3 * ($sx * $y0 + $x0); 
for ($w = $x0; $w <= $x1; $w++) { 
$pixels[$ofs++] = chr(0); 
$pixels[$ofs++] = chr(0); 
$pixels[$ofs++] = chr(0); 
} 
} 
} 
} 
} 
//将文字加入到图象中 
function add_chunk($type) 
{ 
global $result, $data, $chunk, $crc_table; 
// chunk :为层 
// length: 4 字节: 用来计算 chunk 
// chunk type: 4 字节 
// chunk data: length bytes 
// CRC: 4 字节: 循环冗余码校验 
// copy data and create CRC checksum 
$len = strlen($data); 
$chunk = pack("c*", ($len >> 24) & 255, 
($len >> 16) & 255, 
($len >> 8) & 255, 
$len & 255); 
$chunk .= $type; 
$chunk .= $data; 
// calculate a CRC checksum with the bytes chunk[4..len-1] 
$z = 16777215; 
$z |= 255 << 24; 
$c = $z; 
for ($n = 4; $n < strlen($chunk); $n++) { 
$c8 = ($c >> 8) & 0xffffff; 
$c = $crc_table[($c ^ ord($chunk][$n])) & 0xff] ^ $c8; 
} 
$crc = $c ^ $z; 
$chunk .= chr(($crc >> 24) & 255); 
$chunk .= chr(($crc >> 16) & 255); 
$chunk .= chr(($crc >> 8) & 255); 
$chunk .= chr($crc & 255); 
// 将结果加到$result中 
$result .= $chunk; 
} 
//主程序 
$sx = 80; 
$sy = 21; 
$pixels = ""; 
// 填充 
for ($h = 0; $h < $sy; $h++) { 
for ($w = 0; $w < $sx; $w++) { 
$r = 100 / $sx * $w + 155; 
$g = 100 / $sy * $h + 155; 
$b = 255 - (100 / ($sx + $sy) * ($w + $h)); 
$pixels .= chr($r); 
$pixels .= chr($g); 
$pixels .= chr($b); 
} 
} 
1
您可能感兴趣的文章:
