|
|
|
| Опять картиночки ))
Теперь просто надпись на картинке.
imagettftext почему то отказывается наносить текст на gif картинки!
На bmp, png, jpeg все норм! А вот на gif пустота... есть какие-нибудь мысли? | |
|
|
|
|
|
|
|
для: ddhvvn
(08.10.2008 в 11:49)
| | Вообще-то конкретный формат выбирается уже после созддания картинки и формирования изображения. Значит так не может быть по определению.
Что-то у Вас с выбором цветов не то....
Или Вы 257-й цвет пытаетесь создать?
Так опять же, им и другие инструменты рисовать не станут. | |
|
|
|
|
|
|
|
для: ddhvvn
(08.10.2008 в 11:49)
| | Все пишет, это вы ошибку допускаете в чем-то. | |
|
|
|
|
|
|
|
для: sim5
(08.10.2008 в 12:15)
| | Странно... код один и тот же ведь!
На jpg, png, bmp вырисовывает текст, на gif нет!
Но может подробности прояснят ситуацию.. )
Открыватся картинка.
Дальше создается еще 1 изображение. С фоном и текстом на нем!
А дальше это изображение переносится на первоначальное функцией imagecopymerge для прозрачности ...
И все, дальше сохранение...
Вот фон присутствует на изображении, а сам текст нет!
Вот может дело в прозрачности? Хотя пробовал и со значением 100 (без прозрачности)
ДОБАВЛЕНО:
мда... странности какие-то... еще для проверки я сохраняю картинку с текстом (ту которую накладываю) в отдельный файл. В случае с gif она без текста, а в остальных с текстом... | |
|
|
|
|
|
|
|
для: ddhvvn
(08.10.2008 в 12:25)
| | Вас Trianon (как мне показалось) должен был натолкнуть на мысль. Скорее всего вы пишите текст цветом, который за пределами 256-ой палитры. Вот вам пример надписи на gif:
<?
$image = imagecreate(40,30);
imagecolorallocate($image, 0xF6, 0xEF, 0xC9);
$dc = imagecolorallocate($image, 0, 0, 0);
Imagettftext($image, 10, 0, 4, 18, $dc, "arial.ttf", "TEST");
header("Content-type: image/gif");
imagegif($image);
|
Видно надпись? | |
|
|
|
|
|
|
|
для: sim5
(08.10.2008 в 12:29)
| | Нет! ) Точнее да - в отдельном скрипте! Но в отдельном и у меня все работает )))
А проблема именно где-то здесь, в "накладывании" видимо... вот только не пойму какая...
Вот мои цвета
$bg = imagecolorallocate($im, 51, 51, 51); //фон
$tc = imagecolorallocate($im, 204, 204, 204); //текст
|
| |
|
|
|
|
|
|
|
для: ddhvvn
(08.10.2008 в 12:35)
| | Для gif, это будет белое на черном (с поправкой на ЖК монитор). | |
|
|
|
|
|
|
|
для: sim5
(08.10.2008 в 12:38)
| | Да, почти! Я знаю, ведь я это делал =)))
Но проблема-то есть! | |
|
|
|
|
|
|
|
для: ddhvvn
(08.10.2008 в 12:43)
| | Вы что-то не правильно делаете. | |
|
|
|
|
 54.1 Кб |
|
|
для: sim5
(08.10.2008 в 12:43)
| | Странно, странно... ))
Да, вот примерчик ) | |
|
|
|
|
|
|
|
для: ddhvvn
(08.10.2008 в 12:50)
| | Бедный В.В., не лучше ли на Д.Б./К.Р. тренироваться? :) А может лучше поглядеть код? | |
|
|
|
|
|
|
|
для: sim5
(08.10.2008 в 12:54)
| | =)))
поискал в яндексе и закралось подозрение, что проблема в imagecopymerge... а аналогичной функции пока не нашел (
кусок кода
<?php
...
$im = imagecreatefromAny($_FILES['fimage']['tmp_name'], $ext);
$text = iconv("WINDOWS-1251", "UTF-8", $text);
$i_ar = imagettfbbox($f_size, 0, "tahoma.ttf", $text);
$gray = imagecolorallocate($im, 51, 51, 51);
$text_clr = imagecolorallocate($im, 204, 204, 204);
$h_t = abs($i_ar[5])+$i_ar[1];
$w = $i_ar[2]+6;
$h = $h_t+6;
$im_text = imagecreatetruecolor($w, $h);
imagefill($im_text, 0, 0, $text_clr);
imagettftext($im_text, $f_size, 0, 3, abs($i_ar[5])+3, $gray, 'tahoma.ttf', $text);
imagegif($im_text, 'xxx.gif');
$x = ($width-$i_ar[2])/2;
$y = $height - 3*$f_size;
imagecopymerge($im, $im_text, $x, $y, 0, 0, $w, $h, 75);
imageAny(&$im, $path2img, $ext);
...
?>
|
| |
|
|
|
|
|
|
|
для: ddhvvn
(08.10.2008 в 13:00)
| | Что-то я не понял - у вас цвет $gray это фоновый, но и пишите вы им же. | |
|
|
|
|
|
|
|
для: sim5
(08.10.2008 в 13:14)
| | не, не! ))
это я там немного не то скопировал...
...
$text_clr = imagecolorallocate($im, 51, 51, 51);
$bg_clr = imagecolorallocate($im, 204, 204, 204);
imagefill($im, 0, 0, $bg_clr);
...
imagettftext($im, 8, 0, $x_out, $y_out, $text_clr, "tahoma.ttf", $textout);
...
|
| |
|
|
|
|
 6.8 Кб |
|
|
для: ddhvvn
(08.10.2008 в 13:21)
| | Давай все пакуйте в архив, и точно (без глюков :) что в коде, заодно вместо imagecreatefromAny() то что должно быть как исходинк и т.п.. Ибо то, что опять показано, будет работать.
PS. Короче. У вас проблема скорее всего в том, что в итоге (при сохранении в gif-фрмате), цвет индекса надписи получает цвет фона, и вы не видите вашу надпись. Вы уперлись в цвет 51, 51, 51, а он в итоге будет около черного, и на черной подложке ... Вы посмотрите 256-ую палитру цветов. На ЖК в ней вообще некоторые как одно и тоже виглядят. Посмотрите как на примере выглядит надпись на полупрозрачном боксе, выполненная белым цветом и вашим (справа). А если фон будет темным, тогда...? | |
|
|
|
|
|
|
|
для: sim5
(08.10.2008 в 13:25)
| | Разобрался блин! Проглядел как всегда! (
Вот как ток при других форматах работало странн ))
imagecolorallocate я делал к первоначальному изображению, а надо то к тому, которое я накладываю... ) | |
|
|
|
|
|
|
|
для: sim5
(08.10.2008 в 13:25)
| | см. выше ... ) | |
|
|
|
|
|
|
|
для: ddhvvn
(08.10.2008 в 13:53)
| | Ну понятно. Не то, да еще и не туда, страшная смесь... ;-) | |
|
|
|
|
|
|
|
для: sim5
(08.10.2008 в 12:54)
| | - | |
|
|
|
|
|
|
|
для: sim5
(08.10.2008 в 12:54)
| | - | |
|
|
|
|
|
|
|
для: sim5
(08.10.2008 в 12:54)
| | Блин с форумом че или у меня с нэтом? | |
|
|
|
|
|
|
|
для: ddhvvn
(08.10.2008 в 12:35)
| | - | |
|
|
|