Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: GDlib - Перекрывание цветов
 
 автор: Бамси   (15.12.2009 в 00:16)   письмо автору
 
 

Делаю уникальную каптчу.
Как сделать следующий эффект (примерно):
Прямоугольная каптча. По центру черный круг, сам фон белый. Поверх всего этого кладется черный текст. И что бы те части текста, который попадали на черный круг - становились белыми.

  Ответить  
 
 автор: Fractured#   (15.12.2009 в 00:47)   письмо автору
 
   для: Бамси   (15.12.2009 в 00:16)
 

[поправлено модератором]

  Ответить  
 
 автор: Бамси   (15.12.2009 в 00:57)   письмо автору
 
   для: Fractured#   (15.12.2009 в 00:47)
 

Делаю собственную каптчу*

Надеюсь теперь вас ничего не отвлекает.

  Ответить  
 
 автор: sl1p   (15.12.2009 в 01:06)   письмо автору
 
   для: Бамси   (15.12.2009 в 00:57)
 

например пихнуть в массив все координаты точек круга.
и проверить координаты точек текста, если они в данном массиве тогда красим их..

какими функциями это не ко мне:)

но думаю если сильно нужно, то php.net в помощь)

  Ответить  
 
 автор: sim5   (15.12.2009 в 05:47)   письмо автору
 
   для: Бамси   (15.12.2009 в 00:16)
 

Создавайте маску и применяйте фильтр.

  Ответить  
 
 автор: Бамси   (15.12.2009 в 17:14)   письмо автору
 
   для: sim5   (15.12.2009 в 05:47)
 

Если не затруднит, то возможно ли подробнее.
Не найти информации в интернете.

  Ответить  
 
 автор: sim5   (15.12.2009 в 17:39)   письмо автору
 
   для: Бамси   (15.12.2009 в 17:14)
 

На офицальном сайте есть описание функций GD, где приводятся и примеры. Кроме этого, если поискать "работа с графикой в php", то обязательно найдете. Вы можете не найти именно ваш конкретный пример, но этого и не надо, важо понять принцип работы функций и для чего они служат.
Попробуйте сами, а далее помогут.

[поправлено модератором]

  Ответить  
 
 автор: Бамси   (16.12.2009 в 14:28)   письмо автору
 
   для: sim5   (15.12.2009 в 17:39)
 

Действительно не могу найти функции для работы с масками в gdlib.
С фильтрами разобрался.

Сделал попиксельный перебор, но это очень уш долго и не рационально.

  Ответить  
 
 автор: sim5   (16.12.2009 в 14:37)   письмо автору
 
   для: Бамси   (16.12.2009 в 14:28)
 

Почитайте о функциях работы с альфа каналом.

  Ответить  
 
 автор: Саня   (15.12.2009 в 18:24)   письмо автору
 
   для: Бамси   (15.12.2009 в 00:16)
 

Тут прийдётся сделать два ресурса — один с кругом, другой с текстом. А затем попиксельно сравнивать цвет точки на обоих картинках.

  Ответить  
 
 автор: Бамси   (16.12.2009 в 14:27)   письмо автору
 
   для: Саня   (15.12.2009 в 18:24)
 

Попиксельно это идиотизм.
Изображение 300 на 300, он обрабатывает одну секунду.


<?php

$text 
'TEXTEXT';
$h $w 300;
$font 'times.ttf';

$image imagecreatetruecolor($h,$w);

$white ImageColorAllocate($image255255255); 
$black ImageColorAllocate($image000);
$red ImageColorAllocate($image25500);

ImageFill($image11$black);
imageline($image1500150300$white);
ImageFill($image11$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($image50rand(60,0), 100250$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] == 0imagesetpixel($image,$x,$y,$white);
            else 
imagesetpixel($image,$x,$y,$black);
        }
    }

header("Content-Type: image/png"); 
ImagePng($image);
ImageDestroy($image);

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования