|
|
|
| Делаю уникальную каптчу.
Как сделать следующий эффект (примерно):
Прямоугольная каптча. По центру черный круг, сам фон белый. Поверх всего этого кладется черный текст. И что бы те части текста, который попадали на черный круг - становились белыми. | |
|
|
|
|
|
|
|
для: Бамси
(15.12.2009 в 00:16)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: Fractured#
(15.12.2009 в 00:47)
| | Делаю собственную каптчу*
Надеюсь теперь вас ничего не отвлекает. | |
|
|
|
|
|
|
|
для: Бамси
(15.12.2009 в 00:57)
| | например пихнуть в массив все координаты точек круга.
и проверить координаты точек текста, если они в данном массиве тогда красим их..
какими функциями это не ко мне:)
но думаю если сильно нужно, то php.net в помощь) | |
|
|
|
|
|
|
|
для: Бамси
(15.12.2009 в 00:16)
| | Создавайте маску и применяйте фильтр. | |
|
|
|
|
|
|
|
для: sim5
(15.12.2009 в 05:47)
| | Если не затруднит, то возможно ли подробнее.
Не найти информации в интернете. | |
|
|
|
|
|
|
|
для: Бамси
(15.12.2009 в 17:14)
| | На офицальном сайте есть описание функций GD, где приводятся и примеры. Кроме этого, если поискать "работа с графикой в php", то обязательно найдете. Вы можете не найти именно ваш конкретный пример, но этого и не надо, важо понять принцип работы функций и для чего они служат.
Попробуйте сами, а далее помогут.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: sim5
(15.12.2009 в 17:39)
| | Действительно не могу найти функции для работы с масками в gdlib.
С фильтрами разобрался.
Сделал попиксельный перебор, но это очень уш долго и не рационально. | |
|
|
|
|
|
|
|
для: Бамси
(16.12.2009 в 14:28)
| | Почитайте о функциях работы с альфа каналом. | |
|
|
|
|
|
|
|
для: Бамси
(15.12.2009 в 00:16)
| | Тут прийдётся сделать два ресурса — один с кругом, другой с текстом. А затем попиксельно сравнивать цвет точки на обоих картинках. | |
|
|
|
|
|
|
|
для: Саня
(15.12.2009 в 18:24)
| | Попиксельно это идиотизм.
Изображение 300 на 300, он обрабатывает одну секунду.
<?php
$text = 'TEXTEXT';
$h = $w = 300;
$font = 'times.ttf';
$image = imagecreatetruecolor($h,$w);
$white = ImageColorAllocate($image, 255, 255, 255);
$black = ImageColorAllocate($image, 0, 0, 0);
$red = ImageColorAllocate($image, 255, 0, 0);
ImageFill($image, 1, 1, $black);
imageline($image, 150, 0, 150, 300, $white);
ImageFill($image, 1, 1, $white);
for($x=1;$x<$h;$x++)
for($y=1;$y<$w;$y++)
$arr[$x][$y] = imagecolorat($image,$x,$y);
//imagestring($image, 5, 5, 150, md5(rand(1,100)), $red);
imagettftext($image, 50, rand(60,0), 100, 250, $red, $font, $text);
for($x=1;$x<$h;$x++)
for($y=1;$y<$w;$y++)
{
$arr2[$x][$y] = imagecolorat($image,$x,$y);
if($arr[$x][$y] != $arr2[$x][$y])
{
if($arr[$x][$y] == 0) imagesetpixel($image,$x,$y,$white);
else imagesetpixel($image,$x,$y,$black);
}
}
header("Content-Type: image/png");
ImagePng($image);
ImageDestroy($image);
|
| |
|
|
|