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

Форум PHP

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

 

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

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

тема: Использование GD2.
 
 автор: Ziq   (12.05.2005 в 16:14)   письмо автору
 
 

Помогите, пожалуйста, решить такую проблему.
Существует страница index.html, а в ней текст

<img src="img.php">

Привидите, пожалуйста, пример любой картинки, чтобы она отобразилась в браузере.

   
 
 автор: Ziq   (12.05.2005 в 20:46)   письмо автору
 
   для: Ziq   (12.05.2005 в 16:14)
 

Ту проблему я решил, но появилась новая. Когда я пишу текст с помощью imagettftext он получается сглаженным (как в PhotoShope), а если маленький размер шрифта, то выглядит плохо. Как мне отключить сглаживание.

   
 
 автор: krot   (13.05.2005 в 00:44)   письмо автору
 
   для: Ziq   (12.05.2005 в 20:46)
 

не очень понятно очём идёт речь! поподробнне!

   
 
 автор: krot   (13.05.2005 в 00:45)   письмо автору
 
   для: Ziq   (12.05.2005 в 20:46)
 

текст в картинку можно вставлять спомощью imagestring();

   
 
 автор: glsv (Дизайнер)   (13.05.2005 в 04:43)   письмо автору
 
   для: Ziq   (12.05.2005 в 20:46)
 

Попробуйте поработать с функцией imageantialias()
Она включает и отключает опции сглаживания при рисовании.

http://www.softtime.ru/dic/id_dic=398&id_group=15

   
 
 автор: Ziq   (13.05.2005 в 07:05)   письмо автору
 
   для: glsv (Дизайнер)   (13.05.2005 в 04:43)
 

Я приложил картинку, которая получается при выполнении вот этого скрипта

<?
header
("Content-type:image/gif");
$image=Imagecreatetruecolor(100,100);
imageantialias ($imageon);
$color1 imagecolorallocate($image,255,240,0);
$color2 imagecolorallocate($image,255,255,255);
imagettftext($image,8,0,75,40,$color1,"tahoma.ttf","33");
ImageString($image,1,70,2,"122",$color1);
ImageString($image,1,70,11,"122",$color2);
ImageString($image,1,70,20,"122",$color2);
ImageGIF($image);
?>

Как видно функция imagestring() делает то, что я просил, но у нее нельзя выбрать шрифт. А задача в следующем: написать текст на картинке 9 Arial'ом своим цветом.

   
 
 автор: krot   (13.05.2005 в 21:03)   письмо автору
 
   для: Ziq   (13.05.2005 в 07:05)
 

imagestring("сам имейдж", "шрифт - указывается цифрой", x, y, "вставляемая строка", "цвет");

ВОТ!

   
 
 автор: glsv (Дизайнер)   (14.05.2005 в 04:59)   письмо автору
 
   для: Ziq   (13.05.2005 в 07:05)
 

> функция imagestring() делает то, что я просил, но у нее нельзя выбрать шрифт.
Вообще то можно и у нее выбрать шрифт.

int imagestring (resource image, int font, int x, int y, 
                 string s, int color)
Горизонтальное рисование строки s на изображении image. 
font — идентификатор шрифта. Если font равен 1, 2, 3, 4 или 5, то используется встроенный шрифт (большее число соответствует шрифту большего размера).

http://www.softtime.ru/dic/id_dic=390&id_group=15
Загрузить нужный шрифт можно фунцией

int imagepsloadfont (string filename)
Загружает шрифт в формате PostScript Type1 из файла filename. При успешной загрузке возвращается идентификатор шрифта. В противном случае возвращается false.

http://www.softtime.ru/dic/id_dic=381&id_group=15

Так, а imagettftext() чем не подходит? Тем, что сглаженный текст получается? Мне кажется, что и ImageString также рисует. Разве нет?

   
 
 автор: Ziq   (14.05.2005 в 06:56)   письмо автору
 
   для: glsv (Дизайнер)   (14.05.2005 в 04:59)
 

Вы можете ответить проще. Напишите пожалуйста любой текст (9 размер Tahoma)на картинке с помощью PHP.

   
 
 автор: glsv (Дизайнер)   (14.05.2005 в 15:39)   письмо автору
 
   для: Ziq   (14.05.2005 в 06:56)
 

Сегодня уже не смогу выложить код, т.к. убегаю. Выложу к понедельнику.

   
 
 автор: FaStY   (15.05.2005 в 01:59)   письмо автору
 
   для: glsv (Дизайнер)   (14.05.2005 в 15:39)
 

а у меня русский язык не поддерживает :(

   
 
 автор: glsv (Дизайнер)   (15.05.2005 в 06:22)   письмо автору
 
   для: FaStY   (15.05.2005 в 01:59)
 

> а у меня русский язык не поддерживает :(
Какой функцией выводите текст? Imagettftext с загрузкой TrueType-шрифта (ttf)?
Здесь, видимо, есть проблемы с кодировками. Например, arial.ttf, у которого постоянно проблемы с кодировками, у меня тоже в краказяблах выводится. А вот, например, arbat.ttf – нормально. Так что экспериментируйте со шрифтами. Попробуйте найти тот, что будет выводиьтся в читаемом виде.

   
 
 автор: glsv (Дизайнер)   (15.05.2005 в 06:14)   письмо автору
 
   для: Ziq   (14.05.2005 в 06:56)
 

Попробовать написать. Оказалось, что все не так просто.
Чтобы в функции ImageString вместо встроенных шрифтов использовать свои необходимо, чтобы выполнялись условия:
1. Наличие шрифта PostScript Type 1
2. PHP должен быть скомпилирован с опцией --enable-t1lib
Оба условия оказались проблемными. Бесплатных кириллических PostScript Type 1 шрифтов днем с огнем не сыщешь. А когда нашел, то оказалось, что и на локальной машине и на хосте php не может работать с PostScript-шрифтами, т.к. он скомпилирован без опции --enable-t1lib.
Остается вопрос по imagettftext(), в которой можно и шрифт задавать и высоту его.
Чем плоха она? Сглаживанием?
Чтобы отключить сглаживание при выводе текста нужно задать отрицательные значения цвета.

<?
$color3 
imagecolorallocate($image,-255,-240,0); 
imagettftext($image,9,0,69,40,$color3,"tahoma.ttf","1234"); 
?>

Размер шрифта здесь указывается в пикселях.

   
 
 автор: Ziq   (15.05.2005 в 07:30)   письмо автору
 
   для: glsv (Дизайнер)   (15.05.2005 в 06:14)
 

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

   
 
 автор: glsv (Дизайнер)   (16.05.2005 в 05:17)   письмо автору
 
   для: Ziq   (15.05.2005 в 07:30)
 

>ну а если поставить на задний план градиент, то все портиться
А у меня нормально вышло. Код и результат прикладываю. А градиент каким способом ставите?

<? 
header
("Content-type:image/png"); 
$image=Imagecreatetruecolor(100,100); 

$tile imagecreatefromjpeg("tile.jpg");
imagesettile($image$tile);
imagefill($image11IMG_COLOR_TILED);

$color imagecolorallocate($image,-55,-40,0); 
imagettftext($image,8,0,20,50,$color,"tahoma.ttf","12345"); 

Imagepng($image,'',100); 
?>

   
Rambler's Top100
вверх

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