<?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); } }
$date = getdate(); $s = $date["seconds"]; $m = $date["minutes"]; $h = $date["hours"]; $digits = array(95, 5, 118, 117, 45, 121, 123, 69, 127, 125); $lines = array(1, 1, 1, 2, 0, 1, 0, 2, 1, 0, 1, 1, 0, 0, 0, 1, 0, 2, 1, 2, 0, 1, 1, 1, 0, 0, 1, 0);
draw2digits(4, 2, $h); draw2digits(30, 2, $m); draw2digits(56, 2, $s); set_4pixel(0, 0, 0, 26, 7); set_4pixel(0, 0, 0, 26, 13); set_4pixel(0, 0, 0, 52, 7); set_4pixel(0, 0, 0, 52, 13); (编辑:焦作站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|