imagecreatetruecolor() - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > Полезное / Common > Программирование / Programming > PHP

PHP Форум как для начинающих программистов на PHP так и для профессионалов этого дела. Если нужно создать скрипт, функцию и т.д, но не знаете как, спросите у нас и мы вам подскажем. Здесь вы найдете примеры скриптов которые вы сможете использовать на сайтах своих серверов (онлайн, регистрация, семь печатей, топ игроков). Так же много книг и статей.

Ответ
Опции темы
Непрочитано 16.01.2012, 12:29   #1
Изгнанные

Автор темы (Топик Стартер) imagecreatetruecolor()

imagecreatetruecolor() - создаёт новое изображение true color. озвращает идентификатор чёрно-белого изображения размером x_size на y_size. Собственно как можно сменить фон? При волновом искажении изображения, получаются черные края.
Gambit_J вне форума Отправить сообщение для Gambit_J с помощью ICQ Отправить сообщение для Gambit_J с помощью Skype™ Ответить с цитированием
Непрочитано 16.01.2012, 13:25   #2
Пользователь

По умолчанию Re: imagecreatetruecolor()

imagecolorallocate()

З.Ы. Капчу свою пишешь?
В kcaptcha сразу за imagecreatetruecolor() идет imagealphablending(), после этого при помощи imagecolorallocate() указывается цвет фона (белый) и цвет альфа слоя (черный) и поверх рисуется белый прямоугольник
PHP код:
<?php    
$img
=imagecreatetruecolor($width$height);
imagealphablending($imgtrue);
$white=imagecolorallocate($img255255255);
imagefilledrectangle($img00$width-1$height-1$white);
?>
Arzamas вне форума Отправить сообщение для Arzamas с помощью ICQ Отправить сообщение для Arzamas с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 16.01.2012, 14:07   #3
Изгнанные

Автор темы (Топик Стартер) Re: imagecreatetruecolor()

Да, капчу. Все сделал, 1 косяк остался вот. Спс.

Добавлено через 4 минуты
Хмм, принцип понятен, но что-то все так же осталось.

Я понял, вообщем прямоугольник тоже искажаться. Мне надо как-то игнорировать этот момент, ничего в голову не лезет. Или сделать обратное искажение...

P.S. вместео прямоугольника тогда уже легче сделать заливку фона:
imagefill ($img, 0, 0, 0xf9e3e7);

Добавлено через 22 часа 29 минут
Для ясности, вот что происходит:

Последний раз редактировалось Gambit_J; 17.01.2012 в 12:36. Причина: Добавлено сообщение
Gambit_J вне форума Отправить сообщение для Gambit_J с помощью ICQ Отправить сообщение для Gambit_J с помощью Skype™ Ответить с цитированием
Непрочитано 18.01.2012, 15:18   #4
Изгнанные

Автор темы (Топик Стартер) Re: imagecreatetruecolor()

ни кто не шарит?

P.S. программатор где ты когда ты так нужен
Gambit_J вне форума Отправить сообщение для Gambit_J с помощью ICQ Отправить сообщение для Gambit_J с помощью Skype™ Ответить с цитированием
Непрочитано 18.01.2012, 16:39   #5
Пользователь

По умолчанию Re: imagecreatetruecolor()

В той же kcaptcha искривляется только текст, а потом уже накладывается на фон
Arzamas вне форума Отправить сообщение для Arzamas с помощью ICQ Отправить сообщение для Arzamas с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 18.01.2012, 16:56   #6
Изгнанные

Автор темы (Топик Стартер) Re: imagecreatetruecolor()

Цитата:
Сообщение от Arzamas Посмотреть сообщение
В той же kcaptcha искривляется только текст, а потом уже накладывается на фон
да я думал об этом, но как это сделать пока не представляю. Побывал imagecopy() ,чет не вышло =(

Побывал так же наложить фон до вывода искажения, он тупо накрывает все.
Gambit_J вне форума Отправить сообщение для Gambit_J с помощью ICQ Отправить сообщение для Gambit_J с помощью Skype™ Ответить с цитированием
Непрочитано 20.01.2012, 18:51   #7
Аватар для lKingHell
Пользователь

По умолчанию Re: imagecreatetruecolor()

В своё время реализовал так, только надо добавить картинки и рандомно по номеру их выбирать. Получалось так:
PHP код:
<?php
//Количество символов
define('CHARS'5);

//Функция генерации произвольной строки
function generationStr()
{
    
$num CHARS;
    
$range '35';//$range - диапазон алфавита начиная с нуля
    
$chars '1234567890aeiouybcdfghjklmnpqrstvwxz';
    
    for(
$i 0$i $num$i++)
    {
        
$str .= $chars{rand(0$range)};
    }
    return 
$str;
}

//Открываем сессию
session_start();

//Генерируем капчу
$captcha generationStr();

//Записываем капчу в сессию
unset($_SESSION['captcha']);
$_SESSION['captcha'] = $captcha;

//Говорим, что этот файл картинка
header('Content-type: image/jpg');

//Открываем изображение
$img imagecreatefromjpeg('images\noise1.jpg');

//Включаем сглаживание
imageantialias($imgtrue);

//Генерируем путь до шрифта
$font 'fonts\verdana.ttf';

//Добавляем текст
$x 10;
$y 30;
for(
$i 0$i CHARS$i++)
{
    
//Генерируем цвет
    
$color imagecolorallocate($imgrand(50200), rand(50200), rand(50200));

    
$angle rand(020);
    
$size rand(1220);
    
imagettftext($img20$angle$x$y$color$font$_SESSION['captcha'][$i]);
    
$x += 20;
}

//Отдаём изображение
imagejpeg($img""90);
    
?>
__________________
lKingHell вне форума Ответить с цитированием
Непрочитано 20.01.2012, 20:28   #8
Изгнанные

Автор темы (Топик Стартер) Re: imagecreatetruecolor()

Цитата:
Сообщение от lKingHell Посмотреть сообщение
В своё время реализовал так, только надо добавить картинки и рандомно по номеру их выбирать. Получалось так:
PHP код:
<?php
//Количество символов
define('CHARS'5);

//Функция генерации произвольной строки
function generationStr()
{
    
$num CHARS;
    
$range '35';//$range - диапазон алфавита начиная с нуля
    
$chars '1234567890aeiouybcdfghjklmnpqrstvwxz';
    
    for(
$i 0$i $num$i++)
    {
        
$str .= $chars{rand(0$range)};
    }
    return 
$str;
}

//Открываем сессию
session_start();

//Генерируем капчу
$captcha generationStr();

//Записываем капчу в сессию
unset($_SESSION['captcha']);
$_SESSION['captcha'] = $captcha;

//Говорим, что этот файл картинка
header('Content-type: image/jpg');

//Открываем изображение
$img imagecreatefromjpeg('images\noise1.jpg');

//Включаем сглаживание
imageantialias($imgtrue);

//Генерируем путь до шрифта
$font 'fonts\verdana.ttf';

//Добавляем текст
$x 10;
$y 30;
for(
$i 0$i CHARS$i++)
{
    
//Генерируем цвет
    
$color imagecolorallocate($imgrand(50200), rand(50200), rand(50200));

    
$angle rand(020);
    
$size rand(1220);
    
imagettftext($img20$angle$x$y$color$font$_SESSION['captcha'][$i]);
    
$x += 20;
}

//Отдаём изображение
imagejpeg($img""90);
    
?>
так и я могу, но эту капчу можно взломать. Идеальная капча обаладет след. функциями:

1. Слепленные символы
2. Волновое искажение по x и y координатам.
3. Рандомные линии перекрывающие символы (не обязательно) - усложнит чтение символов для человека.
Gambit_J вне форума Отправить сообщение для Gambit_J с помощью ICQ Отправить сообщение для Gambit_J с помощью Skype™ Ответить с цитированием
Непрочитано 28.01.2012, 15:51   #9
Изгнанные

Автор темы (Топик Стартер) Re: imagecreatetruecolor()

Решил проблему намного проще. Считываем где находятся черные пиксели (уже на искаженном изображении), и красим их в нужный нам цвет.

PHP код:
//цвет фона
$background 0xff0000;

// длина
$xx 120;

// ширина
$yy 60;

// заполняем черный фон, нашим цветом фона
    
for ($a=0$a<$xx$a++) {
        for (
$b=0$b<$yy$b++) {
            if (
imagecolorat($img2$a$b) == 0x000000) { imagesetpixel($img2$a$b$background); }
        }
    } 
P.S. Да но это надо делать с учетом того, что у Вас не должен под рандом попадаться черный цвет фона или шрифта, а то все замажется Это не сложно обойти:

PHP код:
// все цвета на выбор, кроме черного
$background imagecolorallocate(rand(1255), rand(1255), rand(1255)); 
Отписал, мб кому пригодиться в будущем.
Gambit_J вне форума Отправить сообщение для Gambit_J с помощью ICQ Отправить сообщение для Gambit_J с помощью Skype™ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 19:16. Часовой пояс GMT +3.

Вверх