Поковыряй код моего недо-генератора капчи. Может, поможет.
UPD: В плане, тут есть команды на создание самой картинки, текста, как это делается... Посмотри, поизучай; мб поможет.
$string = bin2hex(random_bytes(2));
$string .= mt_rand(1,9);
$numfont = mt_rand(1,5);
$dir = "fonts/";
$image = imagecreatetruecolor(300, 200);
$color = imagecolorallocate($image, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
imagettftext ($image, 25, mt_rand(0,180), 150, 100, $color, $dir."{$numfont}.ttf", $string);
imagepng($image,"../files/{$string}.png");
$response = ["response" => ["captcha_text" => $string, "url" => "http://f0329289.xsph.ru/api/files/{$string}.png"]];
}
else {
$response = ["error" => ["error_code" => 2, "error_msg" => "Authorization failed: access_token invaild or expired.", "request_params" => [["key" => "method", "value" => "captcha.generate"],["key" => "access_token", "value" => $usrtoken]]]];
}
} else {
$response = ["error" => ["error_code" => 3, "error_msg" => "Authorization failed: no parametrs.", "request_params" => [["key" => "method", "value" => "captcha.generate"],["key" => "access_token", "value" => $usrtoken]]]];
}
die(json_encode($response,JSON_UNESCAPED_SLASHES));