[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблемы с графикой в PHP
Bandicoot
Хочу установить капчу на свой скрипт, но везде одна и та же картина: не отображается защитный код, то бишь картинка. Думаю, проблема в подключении графической библиотеки GD. У меня установлен denwer в папку C:\WebServers, файл php.ini, также как и php_gd2.dll закинут в папку windows, нужная строка раскомментирована. Что еще мне нужно сделать, и как проверить, что графическая библиотека подключена успешно?



Спустя 2 минуты, 13 секунд (15.02.2011 - 21:43) waldicom написал(а):
Цитата (Bandicoot @ 15.02.2011 - 19:41)
и как проверить, что графическая библиотека подключена успешно?

Что показывает функция phpinfo() ?
Есть там что про GD2 ?

Спустя 3 минуты, 7 секунд (15.02.2011 - 21:46) Bandicoot написал(а):
gdGD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.3.9
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 6b
PNG Support enabled
libPNG Version 1.2.44
WBMP Support enabled
XBM Support enabled

gd.jpeg_ignore_warning 0 0

конкретно про gd2 нет

Спустя 3 минуты, 21 секунда (15.02.2011 - 21:50) Bandicoot написал(а):
Что скажете, ребят?

Спустя 1 минута, 7 секунд (15.02.2011 - 21:51) m4a1fox написал(а):
Bandicoot
Если правильно понял. Тебе реально будет легче написать свою капчу. Если интересно могу скинуть где прочитать про урок создания своей капчи.

Спустя 2 минуты, 28 секунд (15.02.2011 - 21:53) m4a1fox написал(а):
Блин. Не правильно понял вопрос. У меня тоже стоит Denwer. И GD2 я не трогал. она сама как-то работает. Может стоит поработать с графическими файлами? Ну там закачать на сервер, изменить размер. Наложить водяной знак?

Спустя 18 секунд (15.02.2011 - 21:54) sergeiss написал(а):
Цитата (Bandicoot @ 15.02.2011 - 22:46)
GD Version bundled (2.0.34 compatible)

Вот это и есть про GD2 smile.gif

А теперь объясни, что ты подразумеваешь под этими словами
Цитата (Bandicoot @ 15.02.2011 - 22:41)
не отображается защитный код, то бишь картинка.

то есть, как именно ты пытаешься выводить картинку???

Спустя 6 минут, 29 секунд (15.02.2011 - 22:00) Bandicoot написал(а):
Вот код капчи:

$width = 100; //Ширина изображения
$height = 60; //Высота изображения
$font_size = 16; //Размер шрифта
$let_amount = 4; //Количество символов, которые нужно набрать
$fon_let_amount = 30; //Количество символов на фоне
$font = "fonts/cour.ttf"; //Путь к шрифту

//набор символов

$letters = array("a","b","c","d","e","f","g");
//цвета
$colors = array("90","110","130","150","170","190","210");

$src = imagecreatetruecolor($width,$height); //создаем изображение
$fon = imagecolorallocate($src,255,255,255); //создаем фон
imagefill($src,0,0,$fon); //заливаем изображение фоном

for($i=0;$i < $fon_let_amount;$i++) //добавляем на фон буковки
{
//случайный цвет
$color = imagecolorallocatealpha($src,rand(0,255),rand(0,255),rand(0,255),100);
//случайный символ
$letter = $letters[rand(0,sizeof($letters)-1)];
//случайный размер
$size = rand($font_size-2,$font_size+2);
imagettftext($src,$size,rand(0,45),
rand($width*0.1,$width-$width*0.1),
rand($height*0.2,$height),$color,$font,$letter);
}

for($i=0;$i < $let_amount;$i++) //то же самое для основных букв
{
$color = imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)],
$colors[rand(0,sizeof($colors)-1)],
$colors[rand(0,sizeof($colors)-1)],rand(20,40));
$letter = $letters[rand(0,sizeof($letters)-1)];
$size = rand($font_size*2-2,$font_size*2+2);
$x = ($i+1)*$font_size + rand(1,5); //даем каждому символу случайное смещение
$y = (($height*2)/3) + rand(0,5);
$cod[] = $letter; //запоминаем код
imagettftext($src,$size,rand(0,15),$x,$y,$color,$font,$letter);
}

$cod = implode("",$cod); //переводим код в строку

header ("Content-type: image/gif"); //выводим готовую картинку
imagegif($src);

Это ее вывод:

<img src="captcha2.php" alt="защитный код" />

При выводе выводится значение alt, но не сама картинка, то есть как бы если вывод изображений отключить в браузере, но у меня там все включено (использую opera 11)

P.S. Код не мой, но по описаниям должен быть рабочий

Спустя 4 минуты, 23 секунды (15.02.2011 - 22:04) sergeiss написал(а):
Тогда просто введи в браузере http://localhost/captcha2.php (я так понял, что это у тебя локально сделано).

И скажи, что у тебя будет выведено...

И еще - не понятно, что у тебя за переменная $cod, для чего она нужна? Ты её нигде не используешь.

Спустя 5 минут, 4 секунды (15.02.2011 - 22:09) Bandicoot написал(а):

Warning: imagettftext() [function.imagettftext]: Invalid font filename in Z:\home\localhost\www\captcha2.php on line 29

Warning: imagettftext() [function.imagettftext]: Invalid font filename in Z:\home\localhost\www\captcha2.php on line 29

Warning: imagettftext() [function.imagettftext]: Invalid font filename in Z:\home\localhost\www\captcha2.php on line 29

Warning: imagettftext() [function.imagettftext]: Invalid font filename in Z:\home\localhost\www\captcha2.php on line 42

Warning: imagettftext() [function.imagettftext]: Invalid font filename in Z:\home\localhost\www\captcha2.php on line 42

Warning: imagettftext() [function.imagettftext]: Invalid font filename in Z:\home\localhost\www\captcha2.php on line 42

Warning: imagettftext() [function.imagettftext]: Invalid font filename in Z:\home\localhost\www\captcha2.php on line 42

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\captcha2.php:29) in Z:\home\localhost\www\captcha2.php on line 47
GIF87ad


Куча ошибок почему-то((((

Спустя 1 минута, 28 секунд (15.02.2011 - 22:11) Bandicoot написал(а):
Кстати дайте пожалуйста ссылку на урок по созданию капчи, если таковой имеется. Может сам создам)

Спустя 3 минуты, 14 секунд (15.02.2011 - 22:14) Renden написал(а):
Bandicoot
Используй готовые, например http://code.google.com/p/cool-php-captcha/

Спустя 1 минута, 3 секунды (15.02.2011 - 22:15) Bandicoot написал(а):
Цитата (Renden @ 15.02.2011 - 19:14)
Bandicoot
Используй готовые, например http://code.google.com/p/cool-php-captcha/

Server Error
The server encountered an error and could not complete your request.

If the problem persists, please report your problem and mention this error message and the query that caused it.

Спустя 9 секунд (15.02.2011 - 22:15) sergeiss написал(а):
Bandicoot - ну смотри же smile.gif Тут "русским по белому" написано, что "Invalid font filename" - неверное имя файла шрифта.

Про ошибку "Cannot modify header information..." пока не заморачивайся, она, скорее всего, исчезнет после указания правильного шрифта.

А тебе надо файл шрифта записать в тот же каталог, где находится файл капчи. Либо - корректно указать путь к нему. Вроде как, там в начале надо поставить перед слешем одну или две точки.

PS. И никого больше не слушай, а сам сделай smile.gif

Спустя 3 минуты, 18 секунд (15.02.2011 - 22:19) Bandicoot написал(а):
Цитата (sergeiss @ 15.02.2011 - 19:15)
Bandicoot - ну смотри же smile.gif Тут "русским по белому" написано, что "Invalid font filename" - неверное имя файла шрифта.

Про ошибку "Cannot modify header information..." пока не заморачивайся, она, скорее всего, исчезнет после указания правильного шрифта.

А тебе надо файл шрифта записать в тот же каталог, где находится файл капчи. Либо - корректно указать путь к нему. Вроде как, там в начале надо поставить перед слешем одну или две точки.

PS. И никого больше не слушай, а сам сделай smile.gif

Может тогда не заморачиваться с особенными шрифтами, использовать стандартные... Как тут код подправить можно?

Спустя 1 минута, 40 секунд (15.02.2011 - 22:20) sergeiss написал(а):
Я же тебе сказал, что сделать надо с кодом... Только не "тут", а "у тебя на локальном сайте".

Спустя 16 минут, 9 секунд (15.02.2011 - 22:37) sergeiss написал(а):
Ну так и что в итоге?


_____________
Работаю с Уии
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.