php不用GD库生成当前时间的PNG格式图象的程序第1/2页

yipeiwu_com7年前PHP代码库
<?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);
}
}

相关文章

php获取域名的google收录示例

复制代码 代码如下: function get_index($domain){ $url="http://www.google.com/search?source=hp&biw=1440...

简单的方法让你的后台登录更加安全(php中加session验证)

本文将以Joomla!后台链接为例,讲解如何“修改”我们的后台链接,使其更加安全。 原理:通过特定文件为后台入口注册session,否则失败退出。即直接使用原后台地址将无法登录后台。这样...

PHP验证类的封装与使用方法详解

PHP验证类的封装与使用方法详解

本文实例讲述了PHP验证类的封装与使用方法。分享给大家供大家参考,具体如下: <?php /** * Created by PhpStorm. * User: ji...

PHP获取星期几的常用方法小结

本文实例讲述了PHP获取星期几的常用方法。分享给大家供大家参考,具体如下: PHP星期几获取代码: date("l"); //data就可以获取英文的星期比如Sunday date(...

深入php socket的讲解与实例分析

在这一章里你将了解到迷人而又让人容易糊涂的套接字(Sockets)。Sockets在PHP中是没有充分利用的功能。今天你将看到产生一个能使用客户端连接的服务器,并在客户端使用socket...