2014-02-13 3 views
0

Я хочу создать пользовательскую капчу. , поэтому мне нужно преобразовать текст и фоновое изображение как одно изображение;
Теперь я могу использовать только цвет фона в ImageColorAllocate()
Вот мой кодКак использовать фоновое изображение вместо цвета в PHP imagecolorallocate()

<?php
$text = rand (1000, 9999);
$my_img = imagecreate(200, 80);
$background = imagecolorallocate($my_img,255, 255, 255);
$text_colour = imagecolorallocate($my_img, 0, 0, 255);
$line_colour = imagecolorallocate($my_img, 255, 255, 255);
imagestring($my_img, 4, 30, 25, $text, $text_colour);
imagesetthickness ($my_img, 5);
imageline($my_img, 30, 45, 165, 45, $line_colour);
header("Content-type: image/png");
imagepng($my_img);
imagecolordeallocate($line_color);
imagecolordeallocate($text_color);
imagecolordeallocate($background);
imagedestroy($my_img);
?>

ответ

1

Вы можете использовать PHP функцию imagecreatefromjpg, или любой из связанных с ней функций в зависимости от типа изображения, imagecreatefrompng.

Это создаст элемент изображения в PHP из выбранного файла, который вы можете использовать в качестве фонового файла.

От PHP manual.

Ваш следующий вариант - использовать imagecopymerge(), который будет использовать существующий элемент изображения и объединить его с другим изображением. Инфо с PHP manual

+0

спасибо за ваш ответ. Я хочу что-то вроде этого http://solvecaptchas.com/wp-content/uploads/2013/05/Captcha_Creator_PHP_Script-358301.gif могу ли я сделать это в imagecreatefromjpg()? –

+0

Да, вы можете сделать фоновое изображение похожим на эту ссылку, которую вы отправили. Однако вам нужно будет сделать больше форматирования или использовать прозрачные изображения в качестве текста. – SyntaxLAMP

+0

ok thanks brother –

1

Для того, чтобы добавить фон к вашему новому изображению, вам необходимо использовать imagecreatefrompng вместо imagecreate.

Вы можете пройти через другого переполнение стека link

2
<?php 
function LoadJpeg($imgname) 
{ 
    if(!$im) 
{ 
    /* Create a black image */ 
    $im = imagecreatetruecolor(150, 30); 
    $bgc = imagecolorallocate($im, 255, 255, 255); 
    $tc = imagecolorallocate($im, 0, 0, 0); 

    imagefilledrectangle($im, 0, 0, 150, 30, $bgc); 

    /* Output an error message */ 
    imagestring($im, 1, 5, 5, 'Error loading ' . $imgname, $tc); 
} 

return $im; 
} 

header('Content-Type: image/jpeg'); 
$img = LoadJpeg('bogus.image'); 
imagejpeg($img); 
imagedestroy($img); 
?> 
Смежные вопросы