Вопрос PHP

Wolf-izv
На сайте с 04.07.2008
Offline
49
603

Вопрос по каптче.

Есть файл order.php в котором скрипт и форма:

<?php
include("config.inc.php");
$num = mt_rand(0, 12436 * 9);
?>

Далее форма

Есть файл captcha.php в котором сам код каптчи:

<?php
header("Content-type: image/png");
$string = $_GET['text'];
$im = imagecreatefrompng("captcha.png");
// $size = (20);
$orange = imagecolorallocate($im, 255, 165, 0); //Цвет текста в RGB
$gray = imagecolorallocate($im, 128, 128, 128); //Цвет черточек в RGB
$px = (imagesx($im) -7.5 * strlen($string)) / 2;
for ($i=0;$i<300;$i++) {
$x1=rand(0,319);
$x2=rand(0,319);
$y1=rand(0,239);
$y2=rand(0,239);
imageline($im,$x1,$x2,$y1,$y2,$gray);
}
imagestring($im, 4, $px, 11, $string, $orange);
imagepng($im);
imagedestroy($im);
?>

Цель увеличить размер текста на каптче.

По моим предположениям, это можно сделать изменив свойства в строках

$num = mt_rand(0, 12436 * 9);

Или

$string = $_GET['text'];

Подскажите плиз как реализовать это дело.

Для тех кто в теме: бонус +25% от суммы пополнения депозита мой выбор брокера (http://www.roboforex.ru/?a=cyow)
[Удален]
#1

imagestring($im, 4, $px, 11, $string, $orange);

int imagestring (resource image, int font, int x, int y, string s, int col)

Если font равен 1, 2, 3, 4 или 5, используется встроенный шрифт.

Wolf-izv
На сайте с 04.07.2008
Offline
49
#2

1, 2, 3, 4 или 5, это его размер я так понимаю?! На другие значения его не поменяешь?

malls
На сайте с 08.08.2005
Offline
255
#3
CashCardWire:
Если font равен 1, 2, 3, 4 или 5, используется встроенный шрифт.

А если крупный текст не влезет в размер картинки???

Попробуйте юзать:

int imagecopyresized (resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)

imagecopyresized() копирует прямоугольную часть изображения в другое изображение, плавно интерполируя пикселные значения таким образом, что, в частности, уменьшение размера изображения сохранит его чёткость и яркость. Dst_im это изображение назначения, src_im - исходное изображение. Если координаты и ширина и высота источника и назначения различны, будет выполнено соответствующее растягивание и сжатие изображения. Координаты даны относительно верхнего левого угла. Эта функция может использоваться для копирования областей в пределах одного изображения (если dst_im - то же, что и src_im), но если области перекрываются, результат непредсказуем.

Между:

imagestring($im, 4, $px, 11, $string, $orange);

//---->>
imagepng($im);

Так можно всю (уже собранную капчу) сохраняя пропорции перегнать в другой размер.

Wolf-izv
На сайте с 04.07.2008
Offline
49
#4
А если крупный текст не влезет в размер картинки???

Дело в том. что именно текст очень мелкий...нужно именно его увеличить.

int imagecopyresized

За это спасибо, пригодится...но после соотношения текста и фона))

[Удален]
#5
Wolf-izv:
1, 2, 3, 4 или 5, это его размер я так понимаю?! На другие значения его не поменяешь?

Пробуйте как malls (по этому варианту сейчас плотно занят, практически инструмент, а не скрипт заканчиваю :) ) или используйте imagechar().

Wolf-izv
На сайте с 04.07.2008
Offline
49
#6

И все-таки я не доконца догоняю что нужно сделать. :(

malls
На сайте с 08.08.2005
Offline
255
#7

блин ну тут не курсы по PHP - тут просто помогают если надо начать думать в нужном направлении.

Варианта всего два:

1. Изменить размер шрифта (стандартные средства ограниченны - может быть придется подгружать свои шрифты)

2. Изменить целиком размер картинки...

Ответы на все дальнейшие вопросы есть в любом мануале по пыхе...

[Удален]
#8

Самому пришлось столкнуться, оказывается есть решение.


<?
$white = imagecolorallocate ($thumb, 255, 255, 255); //Цвет надписи
imagettftext ($thumb, 50/*Размер шрифта*/, 0, 10, 60, $white, "arial.ttf",$WaterMark);
?>

Файл - arial.ttf или любой другой файл ТТФ шрифта кладется рядом со скриптом.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий