<?php

session_start();
#Создадим картинку. Любой размер
$width=50;
$height=20;
$im=imagecreatetruecolor($width, $height);
#заполним любым более-менее цветным фоном
imagefill($im, 0, 0, imagecolorallocate($im, 255, 255, 255));
#количество цифр
$limit=4;
#начальная позиция текста
$start_pos_x=0;
#строка
$string='';
for($i=0; $i<$limit; $i++)
{
	#позиция по координате y
	$start_pos_y=2;
	#позиция по координате x
	$start_pos_x+=8;
	#записываем в строку
	$string.=rand(1, 9);
	#рисуем на рисунке
	imagestring($im, rand(4, 7), $start_pos_x, $start_pos_y, $string[$i],
	imagecolorallocate($im, rand(90, 150), rand(90, 150), rand(90, 150)));
}
#изменяем каждый пиксел
for($j=0; $j<$width; $j++) for($k=0; $k<$height; $k++)
{
	#берем цвет каждого пиксела
	$take=imagecolorat($im, $j, $k);
	$take=imagecolorsforindex($im, $take);
	$rgb[0]=$take['red'];
	$rgb[1]=$take['green'];
	$rgb[2]=$take['blue'];
	#смотрим, как его изменить
	foreach($rgb as $key => $value)
	{
		$rand_do=rand(1, 0);
		$rand_coef=rand(5, 60);
		if($rand_do)
		{
			#если добавить
			$add=$value+$rand_coef;
			if($add>255) $add=255;
			$rgb[$key]=$add;
		}
		else
		{
			#если отнять
			$minus=$value-$rand_coef;
			if($minus<0) $minus=0;
			$rgb[$key]=$minus;
		}

	}
}
#заносим текст в сессию
$_SESSION['code'] = $string;
#выводим картинку
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>