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

Форум PHP

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

 

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

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

тема: функция TTF
 
 автор: gen   (09.12.2006 в 13:45)   письмо автору
 
 

вот блок команд :

$pic = ImageCreateFromgif($img);
Header("Content-type: image/gif");
$color=ImageColorAllocate($pic, 250, 0, 0);
$h = ImageSY($pic) - 5;
$w = ImageSX($pic) - 85;
ImageTTFtext($pic, 12, 0, $w, $h, $color, 'Times', 'My Web-site');
Imagegif($pic);
ImageDestroy($pic);

на локалхосте (где установлена php5) все это работает
на агаве (там установлена php4) же несрабатывает команда:

ImageTTFtext($pic, 12, 0, $w, $h, $color, 'Times', 'My Web-site');
(это - наложение текста на картинку)

получается что эта команда появилась только в php5 (отсутствовала в php4) ?
или дело не в этом?

   
 
 автор: DEM   (09.12.2006 в 14:38)   письмо автору
 
   для: gen   (09.12.2006 в 13:45)
 

Может на агаве стоит более старая версия GD?

   
 
 автор: gen   (09.12.2006 в 14:40)   письмо автору
 
   для: DEM   (09.12.2006 в 14:38)
 

была такая мысль вот и думаю как это обойти
но без вашей помощи с этим мне не сладить
я только обнаружил что этой функции у них точно нет
может быть есть другая аналогичная функция какая может быть кто-нибудь знает

   
 
 автор: Trianon   (09.12.2006 в 17:07)   письмо автору
 
   для: gen   (09.12.2006 в 13:45)
 

>на агаве (там установлена php4) же несрабатывает команда:
Что значит "не срабатывает"?

   
 
 автор: gen   (09.12.2006 в 17:41)   письмо автору
 
   для: Trianon   (09.12.2006 в 17:07)
 

а так, что если она не закомментирована (то есть включена ) то вообще вместо рисунка выдается [х]. А если ее исключить из блока команд то рисунок хотя бы не портится но естественно ожидаемого наложения текста не происходит
или вот беру такой код:
<?php
// Set the content-type
header ( "Content-type: image/png" );

// Create the image
$im = imagecreatetruecolor ( 400 , 30 );

// Create some colors
$white = imagecolorallocate ( $im , 255 , 255 , 255 );
$grey = imagecolorallocate ( $im , 128 , 128 , 128 );
$black = imagecolorallocate ( $im , 0 , 0 , 0 );

// The text to draw
$text = 'Testing...' ;
// Replace path by your own font path
$font = 'arial.ttf' ;

// Add some shadow to the text
ImageTTFtext ( $im , 20 , 0 , 11 , 21 , $grey , $font , $text );

// Add the text
imagettftext ( $im , 20 , 0 , 10 , 20 , $black , $font , $text );

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng ( $im );
imagedestroy ( $im );
?>
так выдается сообщение
<br />
<b>Warning</b>: imagettftext(): Could not find/open font in <b>/home/g/golnat.h17.ru/WWW/graf/img4.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: imagettftext(): Could not find/open font in <b>/home/g/golnat.h17.ru/WWW/graf/img4.php</b> on line <b>22</b><br />
‰PNG


IHDRђЌЯ‡:IDATxњнБ
В чOm7 ЂЊѕ{‚©IEND®B`‚

   
 
 автор: Trianon   (09.12.2006 в 18:08)   письмо автору
 
   для: gen   (09.12.2006 в 17:41)
 

Другими словами, функция присутствует и работает.
Просто Вы не обеспечили ей файл с фонтом. Так обеспечьте. В текущем каталоге.

   
 
 автор: gen   (09.12.2006 в 18:22)   письмо автору
 
   для: Trianon   (09.12.2006 в 18:08)
 

Для меня "обеспечте" это проблема. Я буду пытаться ее преодолеть.
Но вот вопрос, почему на локалхосте эта проблема не возникает ,там наложение текста идет нормально?

   
 
 автор: Trianon   (09.12.2006 в 18:27)   письмо автору
 
   для: gen   (09.12.2006 в 18:22)
 

надо взять файл arial.ttf и скопировать его _под_этим_именем_ в каталог со скриптом.
Это называется "обеспечить"

Потому что на локалхосте - windows. У него своих фонтов полно.

   
 
 автор: gen   (09.12.2006 в 18:32)   письмо автору
 
   для: Trianon   (09.12.2006 в 18:27)
 

вобще-то получилось , но только для примитивных картинок

когда же я взял реальную картинку - фото, то она не стала выводится даже без попытки наложения текста:
код
$pic = ImageCreateFromjpeg($img);
Header("Content-type: image/jpeg");
$color=ImageColorAllocate($pic, 250, 0, 0);
$h = ImageSY($pic)-100 ;
$w = ImageSX($pic)-2800 ;
ImageTTFtext($pic, 120, 0, $w, $h, $color, 'arial.ttf', 'Lena Nik! S Novim 2007 Godom!');
Imagejpeg($pic);
ImageDestroy($pic);

если в этом коде закомментировать команду с TTF,
то все равно выводитcя [х]

к этому коду PHP я обращаюсь из такой строчки:

<td><img src="img.php?imya=DSC_0836&ext=jpg" width=800 height=400></td>
а если взять просто
<td><img src="DSC_0836.jpg" width=800 height=400></td>
то выведится исходное фото

   
 
 автор: gen   (10.12.2006 в 05:31)   письмо автору
 
   для: gen   (09.12.2006 в 18:32)
 

вобще-то получилось , но только для примитивных картинок

когда же я взял реальную картинку - фото, то она не стала выводится даже без попытки наложения текста:
код
$pic = ImageCreateFromjpeg($img);
Header("Content-type: image/jpeg");
$color=ImageColorAllocate($pic, 250, 0, 0);
$h = ImageSY($pic)-100 ;
$w = ImageSX($pic)-2800 ;
ImageTTFtext($pic, 120, 0, $w, $h, $color, 'arial.ttf', 'Lena Nik! S Novim 2007 Godom!');
Imagejpeg($pic);
ImageDestroy($pic);

если в этом коде закомментировать команду с TTF,
то все равно выводитcя [х]

к этому коду PHP я обращаюсь из такой строчки:

<td><img src="img.php?imya=DSC_0836&ext=jpg" width=800 height=400></td>
а если взять просто
<td><img src="DSC_0836.jpg" width=800 height=400></td>
то выведится исходное фото

   
 
 автор: Trianon   (10.12.2006 в 09:02)   письмо автору
 
   для: gen   (09.12.2006 в 18:32)
 

Наверное, стоит отключить
>Header("Content-type: image/jpeg");
и
>Imagejpeg($pic);
до тех пор, пока не отладите скрипт.

Просто, чтобы видеть ошибки.

В любом случае, проблему с TTF Вы решили.

   
 
 автор: gen   (10.12.2006 в 11:51)   письмо автору
 
   для: Trianon   (10.12.2006 в 09:02)
 

Однако нет. Как только я отключаю указанные Вами команды в любом сочетании, то выводится [х] даже для мультяшной картинки, а ошибки не выдаются

   
 
 автор: Trianon   (10.12.2006 в 11:58)   письмо автору
 
   для: gen   (10.12.2006 в 11:51)
 

Если пытаться смотреть сообщения об ошибках скволь призму <img src="img.php?imya=DSC_0836&ext=jpg"> - тогда конечно.

Ссылку на скрипт в строке браузера набрать не пробовали?

   
 
 автор: gen   (10.12.2006 в 13:41)   письмо автору
 
   для: Trianon   (10.12.2006 в 11:58)
 

сделал ссылки:
<td><a href='img.php?imya=ischo&ext=jpg'>картинка1</a></td>
<td><a href='img.php?imya=DSC_0836&ext=jpg'>картинка2</a></td>
C мультяшной картинкой все нормально, а картинка2 выдает d> и далее подключается агава с сообщением err500 и все, в чем дело неясно

   
 
 автор: Trianon   (10.12.2006 в 14:04)   письмо автору
 
   для: gen   (10.12.2006 в 13:41)
 

Может быть фотография просто слишком большая, и скрипту не хватает памяти?
imagecreatefromjpeg в этом случае возвращает пустую строку.

   
 
 автор: gen   (10.12.2006 в 15:00)   письмо автору
 
   для: Trianon   (10.12.2006 в 14:04)
 

-

   
 
 автор: gen   (10.12.2006 в 15:00)   письмо автору
 
   для: Trianon   (10.12.2006 в 14:04)
 

-я все что можно убрал в сайте это больше чем объем фото (я задействовал фото поменьше- 699 316 это всего в 2 раза больше чем arial.ttf (я убрал например times.ttf, которая больше arial.ttf) и т.д. все равно $pic пусто и выдается d>
в чем же дело?

   
 
 автор: Trianon   (10.12.2006 в 15:25)   письмо автору
 
   для: gen   (10.12.2006 в 15:00)
 

При чем тут сайт?
Изображение может в оперативную память не помещаться.
Какой у него размер?

   
 
 автор: gen   (10.12.2006 в 15:31)   письмо автору
 
   для: Trianon   (10.12.2006 в 15:25)
 

как я понимаю 700кб

   
 
 автор: Trianon   (10.12.2006 в 15:32)   письмо автору
 
   для: gen   (10.12.2006 в 15:31)
 

Размер изображения - это его ширина и высота. Какие они?

   
 
 автор: gen   (10.12.2006 в 15:39)   письмо автору
 
   для: Trianon   (10.12.2006 в 15:32)
 

конечно огромные цифры например 3000 х 2000
или 2300 х 1700 и какие пути обхода?

   
 
 автор: Trianon   (10.12.2006 в 15:49)   письмо автору
 
   для: gen   (10.12.2006 в 15:39)
 

В байтах 3000 x 2000 x 4 = 24 Mb

А памяти у Вас:

echo 'Memory limit:'.get_cfg_var('memory_limit').'<br>';
echo  'Used:'.memory_get_usage();

И даже меньше, т.к. на построение результата тоже что-то идет.

Пути обхода зависят от целей скрипта.

   
 
 автор: gen   (10.12.2006 в 16:08)   письмо автору
 
   для: Trianon   (10.12.2006 в 15:49)
 

на локале такие сообщения

Memory limit:8M
Fatal error: Call to undefined function memory_get_usage() in C:\www\html\graf\img2.php on line 4

на агаве
Memory limit:
Used:14976
что касается цели скрипта то это овладение инструментария построение сайта

   
 
 автор: Trianon   (10.12.2006 в 16:20)   письмо автору
 
   для: gen   (10.12.2006 в 16:08)
 

Значит, по умолчанию, 8Мb . А Вы туда втрое больше хотите запихнуть.

Цель можно достичь и на меньшего размера фотографиях.

   
 
 автор: gen   (10.12.2006 в 16:33)   письмо автору
 
   для: Trianon   (10.12.2006 в 16:20)
 

ясно спасибо

   
Rambler's Top100
вверх

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