Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Цвет текста на картинке 
:(
    Опции темы
K0SHKA
Дата 30.1.2009, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



Доброго времени.. 
Простите меня глупую за такой вопрос. Но вот незнаю уже что делать.
Проблема в следующем, создаём изображение 

$img = imageCreateFromGif("Img.gif");

Далее устанавливаем цвет шрифта(как я поняла) 

$colour = imagecolorallocate($image, 0,255,255);

и пишем текст на картинке.

imagettftext($image, $size, $angle, $x, $y, $colour, $font,"GGG");

Проблема в том что когда картинка цветная то шрифт становиться почти равным цвету картинки(бэкграунда). И никакое значение imagecolorallocate() неможет повлиять на цвет пусть оно будет imagecolorallocate($img,0,0,0) или же imagecolorallocate($img,255,255,255)..

Как мне изменить цвет текста на фоне картинки, подскожите пожалуйста. smile 
Сборка сервера стандартная (DENWER).  
PM   Вверх
bars80080
Дата 30.1.2009, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 2
Всего: 315



в гифе используется зарезервированное число цветов и если ты выбираешь другой, то автоматом ищется ближайший. там должна быть ещё функция добавления цвета в саму картинку
PM MAIL WWW   Вверх
ksnk
Дата 30.1.2009, 23:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 2
Всего: 386



K0SHKA, Если в gif'е нет прозрачных областей, то все относительно просто  smile 
-- прочитать gif imagecreatefromgif 
-- узнать его габариты
-- создать картинку imagecreatetruecolor с размерами по габаритам 
-- скопировать гифку в эту картинку imagecopyresampled. использовать другие функции копирования - опасно для здоровья smile
-- написать на картинке то, чего нужно

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


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
skyboy
Дата 30.1.2009, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 3
Всего: 260



Цитата(bars80080 @  30.1.2009,  21:37 Найти цитируемый пост)
должна быть ещё функция добавления цвета в саму картинку 

imagecolorallocate smile
вообще говоря, после изучения мануала(что советую в подобных случаях делать в первую очередь), возникают мысли:
Цитата

The first call to imagecolorallocate() fills the background color in palette-based images - images created using imagecreate(). 

Если я правильно понимаю, возможно, первый вызов выбирает уже существующий цвет с кодом 0 из палитры картинки. И тогда цвет выводимого шрифта действительно совпадет с цветом фона.
Цитата(http://ua.php.net/manual/ru/function.imagecolorallocate.php#78726)

When working on an existant GIF images, if the number of different colours has reached the limits of the GIF format, imagecolorallocate will not use to the colour you ask her within the parameters, she will apply black !

Возможно, человек имеет в виду не черный цвет, а, опять же, компонент палитры с цветом ноль - т.е. то, что скорее всего выступает цветом фона.
Эти предположения требуют проверки, которые я провести не могу сейчас. Так что прошу отнестись с должным скепсисом.
PM MAIL   Вверх
unicross
Дата 30.1.2009, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 1
Всего: 53



Цитата(bars80080 @  30.1.2009,  22:37 Найти цитируемый пост)
 то автоматом ищется ближайший

Не ищется! Функция imagecolorallocate() просто возвращает False, если невозможно добавить новый цвет.

Код

<?php
header("Content-type: image/gif");
$img = imageCreateFromGif("img.gif");
if (imagecolorstotal($img) == 256) { // Максимальное количество
   $red = imagecolorclosest($img, 255, 0, 0);
   $str = 'Ближайший';
}
else {
   $red = imagecolorallocate($img, 255, 0, 0);
   $str = 'Красный';
}
$fontfile = 'C:/Windows/Fonts/arial.ttf';
$str = iconv('windows-1251', 'UTF-8', $str);
imagettftext($img, 20, 0, 25, 25, $red, $fontfile, $str);
imagegif($img);
imagedestroy($img);
?>


Если вместо цвета передать False, то будет цвет с #0
Код

imagettftext($img, 20, 0, 25, 25, false, $fontfile, $str);


Это сообщение отредактировал(а) unicross - 30.1.2009, 23:17
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.