本文整理汇总了PHP中captcha::random_color方法的典型用法代码示例。如果您正苦于以下问题:PHP captcha::random_color方法的具体用法?PHP captcha::random_color怎么用?PHP captcha::random_color使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类captcha
的用法示例。
在下文中一共展示了captcha::random_color方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: image
function image($phrase, $width = 200, $height = 60, $inverse = 0, $maxsize = 0xfffff)
{
#-- initialize in-memory image with gd library
srand(microtime() * 21017);
$img = imagecreatetruecolor($width, $height);
$R = $inverse ? 0xff : 0x0;
imagefilledrectangle($img, 0, 0, $width, $height, captcha::random_color($img, 222 ^ $R, 255 ^ $R));
$c1 = rand(150 ^ $R, 185 ^ $R);
$c2 = rand(195 ^ $R, 230 ^ $R);
#-- configuration
$fonts = array();
$fonts += glob(EWIKI_FONT_DIR . "/*.ttf");
#-- encolour bg
$wd = 20;
$x = 0;
while ($x < $width) {
imagefilledrectangle($img, $x, 0, $x += $wd, $height, captcha::random_color($img, 222 ^ $R, 255 ^ $R));
$wd += max(10, rand(0, 20) - 10);
}
#-- make interesting background I, lines
$wd = 4;
$w1 = 0;
$w2 = 0;
for ($x = 0; $x < $width; $x += (int) $wd) {
if ($x < $width) {
// verical
imageline($img, $x + $w1, 0, $x + $w2, $height - 1, captcha::random_color($img, $c1, $c2));
}
if ($x < $height) {
// horizontally ("y")
imageline($img, 0, $x - $w2, $width - 1, $x - $w1, captcha::random_color($img, $c1, $c2));
}
$wd += rand(0, 8) - 4;
if ($wd < 1) {
$wd = 2;
}
$w1 += rand(0, 8) - 4;
$w2 += rand(0, 8) - 4;
if ($x > $height && $y > $height) {
break;
}
}
#-- more disturbing II, random letters
$limit = rand(30, 90);
for ($n = 0; $n < $limit; $n++) {
$letter = "";
do {
$letter .= chr(rand(31, 125));
// random symbol
} while (rand(0, 1));
$size = rand(5, $height / 2);
$half = (int) ($size / 2);
$x = rand(-$half, $width + $half);
$y = rand(+$half, $height);
$rotation = rand(60, 300);
$c1 = captcha::random_color($img, 130 ^ $R, 240 ^ $R);
$font = $fonts[rand(0, count($fonts) - 1)];
imagettftext($img, $size, $rotation, $x, $y, $c1, $font, $letter);
}
#-- add the real text to it
$len = strlen($phrase);
$w1 = 10;
$w2 = $width / ($len + 1);
for ($p = 0; $p < $len; $p++) {
$letter = $phrase[$p];
$size = rand(18, $height / 2.2);
$half = (int) $size / 2;
$rotation = rand(-33, 33);
$y = rand($size + 3, $height - 3);
$x = $w1 + $w2 * $p;
$w1 += rand(-$width / 90, $width / 40);
// @BUG: last char could be +30 pixel outside of image
$font = $fonts[rand(0, count($fonts) - 1)];
$r = rand(30, 99);
$g = rand(30, 99);
$b = rand(30, 99);
// two colors for shadow
$c1 = imagecolorallocate($img, $r * 1 ^ $R, $g * 1 ^ $R, $b * 1 ^ $R);
$c2 = imagecolorallocate($img, $r * 2 ^ $R, $g * 2 ^ $R, $b * 2 ^ $R);
imagettftext($img, $size, $rotation, $x + 1, $y, $c2, $font, $letter);
imagettftext($img, $size, $rotation, $x, $y - 1, $c1, $font, $letter);
}
#-- let JFIF stream be generated
$quality = 67;
$s = array();
do {
ob_start();
ob_implicit_flush(0);
imagejpeg($img, "", (int) $quality);
$jpeg = ob_get_contents();
ob_end_clean();
$size = strlen($jpeg);
$s_debug[] = (int) ($quality * 10) / 10 . "%={$size}";
$quality = $quality * ($maxsize / $size) * 0.93 - 1.7;
// -($quality/7.222)*
} while ($size > $maxsize && $quality >= 16);
imagedestroy($img);
#print_r($s_debug);
return $jpeg;
}