1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/reevy-ImageVerifyCode

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
code_gg.php 2.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
reevy Отправлено 04.05.2015 05:53 ca806bc
<?php
function getAuthImage($text) {
$im_x = 160;
$im_y = 40;
$im = imagecreatetruecolor($im_x, $im_y);
$text_c = ImageColorAllocate($im, mt_rand(0, 100), mt_rand(0, 100), mt_rand(0, 100));
$tmpC0 = mt_rand(100, 255);
$tmpC1 = mt_rand(100, 255);
$tmpC2 = mt_rand(100, 255);
$buttum_c = ImageColorAllocate($im, $tmpC0, $tmpC1, $tmpC2);
imagefill($im, 16, 13, $buttum_c);
$font = 'airbusspecial.ttf';
for ($i = 0; $i < strlen($text); $i++) {
$tmp = substr($text, $i, 1);
$array = array(-1, 1);
$p = array_rand($array);
$an = $array[$p] * mt_rand(1, 10); //角度
$size = 28;
imagettftext($im, $size, $an, 15 + $i * $size, 35, $text_c, $font, $tmp);
}
$distortion_im = imagecreatetruecolor($im_x, $im_y);
imagefill($distortion_im, 16, 13, $buttum_c);
for ($i = 0; $i < $im_x; $i++) {
for ($j = 0; $j < $im_y; $j++) {
$rgb = imagecolorat($im, $i, $j);
if ((int) ($i + 20 + sin($j / $im_y * 2 * M_PI) * 10) <= imagesx($distortion_im) && (int) ($i + 20 + sin($j / $im_y * 2 * M_PI) * 10) >= 0) {
imagesetpixel($distortion_im, (int) ($i + 10 + sin($j / $im_y * 2 * M_PI - M_PI * 0.1) * 4), $j, $rgb);
}
}
}
//加入干扰象素;
$count = 160; //干扰像素的数量
for ($i = 0; $i < $count; $i++) {
$randcolor = ImageColorallocate($distortion_im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagesetpixel($distortion_im, mt_rand() % $im_x, mt_rand() % $im_y, $randcolor);
}
$rand = mt_rand(5, 30);
$rand1 = mt_rand(15, 25);
$rand2 = mt_rand(5, 10);
for ($yy = $rand; $yy <= +$rand + 2; $yy++) {
for ($px = -80; $px <= 80; $px = $px + 0.1) {
$x = $px / $rand1;
if ($x != 0) {
$y = sin($x);
}
$py = $y * $rand2;
imagesetpixel($distortion_im, $px + 80, $py + $yy, $text_c);
}
}
//设置文件头;
Header("Content-type: image/JPEG");
//以PNG格式将图像输出到浏览器或文件;
ImagePNG($distortion_im);
//销毁一图像,释放与image关联的内存;
ImageDestroy($distortion_im);
ImageDestroy($im);
}
function make_rand($length = "32") {//验证码文字生成函数
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$result = "";
for ($i = 0; $i < $length; $i++) {
$num[$i] = rand(0, 25);
$result.=$str[$num[$i]];
}
return $result;
}
//输出调用
$checkcode = make_rand(4);
session_start(); //将随机数存入session中
$_SESSION['helloweba_gg'] = strtolower($checkcode);
getAuthImage($checkcode);
?>

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/reevy-ImageVerifyCode.git
git@api.gitlife.ru:oschina-mirror/reevy-ImageVerifyCode.git
oschina-mirror
reevy-ImageVerifyCode
reevy-ImageVerifyCode
master