|
|
|
|
<?php
header ("Content-type: image/gif");
$im = imagecreate (400, 100);
$black = imagecolorallocate ($im, 0, 0, 0);
$white = imagecolorallocate ($im, 255, 255, 255);
imagettftext ($im, 20, 0, 10, 20, $white, "chonker.ttf", "TEXT TEXT TEXT");
imagegif ($im);
imagedestroy ($im);
?>
|
Не могу понять, где ошибка, но картинки нет | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 02:01)
| | Следует включить диагностику ошибок, и временно убрать выброс в заголовок поля типа содержимого.
И посмотреть на ошибки.
Вывод изображения также можно временно убрать в файл. | |
|
|
|
|
|
|
|
для: Trianon
(25.12.2010 в 02:29)
| | Warning: imagettftext() [function.imagettftext]: Could not find/open font in /дальше пишет путь к файлу на сервере/ on line 6
Он не может найти и открыть файл со шрифтом
Как-то видимо надо указать абсолютный путь к шрифтовому файлу.
Написал иначе:
<?php
$im = imagecreate (400, 100);
$black = imagecolorallocate ($im, 0, 0, 0);
$white = imagecolorallocate ($im, 255, 255, 255);
$real_path = realpath("chonker.ttf");
imagettftext ($im, 20, 0, 10, 20, $white, $real_path, "TEXT TEXT TEXT");
imagegif ($im);
imagedestroy ($im);
?>
|
И снова та же ошибка. | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 02:33)
| | что в переменной $real_path ? | |
|
|
|
|
|
|
|
для: Trianon
(25.12.2010 в 02:55)
| | там путь к файлу
вида: /usr/home/.../public_html ( это папка сервера, куда грузятся файлы ) /chonker.ttf
решил проверить "пример" из PHP.net
http://ru.php.net/manual/en/function.imagettftext.php
<?php
// Set the content-type
// Create the image
$im = imagecreatetruecolor(350, 30);
// Create some colors
$white = imagecolorallocate($im, 0, 0, 0);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
// The text to draw
$text = 'Welcome!';
// Replace path by your own font path
$font = 'chonker.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);
?>
|
и та же самая ошибка - не может открыть найти и открыть font | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 03:02)
| | так а файл-то есть на этом месте?
И он имеет ровно такое имя, учитывая строчные и прописные символы? | |
|
|
|
|
|
|
|
для: Trianon
(25.12.2010 в 04:36)
| | Во втором примере получилось!
Но только если буквы латинские...
а вот если кириллица - не выводит | |
|
|
| |
|
|
|
|
для: Valick
(25.12.2010 в 11:21)
| | Спасибо, Vallick, а сами-то вы проверяли этот код?
Я проверил, всё отлично, а русский текст - как не отображался, так и не отображается.
Пишу я в Блокноте, и файл мой (.php) уже в UTF-8, и в .htaccess charset="UTF-8".
Интересно, а как всё-таки перекодировать русский текст в символы Юникода, чтобы он отобразился? | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 11:39)
| | Спасибо, Vallick, а сами-то вы проверяли этот код?
угу, код перевода взят из книги Д. Котерова
__
chonker.ttf положите в папку со скриптом | |
|
|
|
|
|
|
|
для: Valick
(25.12.2010 в 11:42)
| | Конечно, файл chonker.ttf лежит там, где нужно.
Конечно, в нём есть кирилличный шрифт.
Однако, указанный пример из книги не применим, в нём ошибки. | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 11:56)
| | вы по второй ссылке ходили? там месяца три читать можно, информации выше крыши
и если у всех кроме Вас работает, то может все таки "лыжи не едут"? ;) | |
|
|
|
|
 3.1 Кб |
|
|
для: Petter
(25.12.2010 в 11:56)
| | >Однако, указанный пример из книги не применим, в нём ошибки.
<?
$im = imagecreatetruecolor(350, 36);
$white = imagecolorallocate($im, 0, 0, 0);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
$text = 'Вы не правы!';
$font = 'aktau.ttf';
imagettftext($im, 20, 0, 11, 34, $grey, iconv('windows-1251','utf-8',$font), $text);
imagettftext($im, 20, 0, 10, 33, $black, iconv('windows-1251','utf-8',$font), $text);
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
|
PS. iconv только потому, что выполнялось все из под 1251, для вас это не имеет значения. | |
|
|
|
|
 2.4 Кб |
|
|
для: sim5
(25.12.2010 в 12:56)
| | ... и отображается только восклицательный знак на чёрном фоне...
Вообще, насколько я понимаю, перекодироваться должен текст, а не font,
но даже если так :
<?php
$im = imagecreatetruecolor(350, 36);
$white = imagecolorallocate($im, 0, 0, 0);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
$text = 'TEXT: Вы не правы!';
$font = 'chonker.ttf';
imagettftext($im, 20, 0, 11, 34, $grey, $font, iconv("windows-1251", "UTF-8", "$text"));
imagettftext($im, 20, 0, 10, 33, $black, $font, iconv("windows-1251", "UTF-8", "$text"));
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
|
И виден только TEXT: белым по чёрному фону
А почему мне надо перекодировать русский текст, если файл уже в UTF-8?
Как всё-таки отобразить русский текст? Ведь, латинский-то, без проблем отображается. | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 13:21)
| | Привально понимаете, просто при копировании допустил ошибку. Ничего вам не надо конвертировать, это у меня среда 1251, а данной функции требуется именно utf.
Вы картинку видели? Если нет русского, то хотя бы проверьте шрифт свой, если ли в нем такая кодовая страница. | |
|
|
|
|
|
|
|
для: sim5
(25.12.2010 в 13:51)
| | Конечно, я картинку видел,
и, думаю, что видимо настройки серверов у нас разные, и попробую обратиться туда...
Шрифтовый файл в порядке, в нём кириллица есть. | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 14:02)
| | Шрифт arial.ttf из набора windows/fonts пробовали применить?
Шрифты шрифтам рознь. | |
|
|
|
|
|
|
|
для: Trianon
(25.12.2010 в 14:03)
| | попробую
а надо только .ttf?
У меня в Windows только Open Type | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 14:13)
| | Здрастье, приехали:
imagettftext - записывает текст на изображение с использованием шрифтов TrueType.
Да и само название функции говорит об этом. | |
|
|
|
|
 3 Кб |
|
|
для: sim5
(25.12.2010 в 14:33)
| | Да, попробовал с другим шрифтом
только квадратики вместо русских букв, на картинке видно.
И шрифт arial.ttf утащил из своего компьютера, по Вашему совету, для проверки, загрузил на сервер, и всё тоже самое, шрифт теперь arial, и только латынь и квадратики; то есть, проблема заключается не в шрифтовом файле, а в работе функции imagettftext().
// Set the content-type
header('Content-type: image/png');
// Create the image
$im = imagecreatetruecolor(350, 30);
// Create some colors
$white = imagecolorallocate($im, 0, 0, 0);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
// The text to draw
$text = 'Welcome! Привет!';
// 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);
?>
|
| |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 14:43)
| | Нет никаких проблем в функции, это у вас проблемы с предоставлением тескта. | |
|
|
|
|
 3.9 Кб |
|
|
для: sim5
(25.12.2010 в 15:23)
| | sim5, Вы абсолютно правы.
Когда я записал русский текст Юникодом, просто, тупо, набив вручную, то всё получилось, и на картинке видно.
$text = 'Welcome! ПРИВЕТ!';
|
А какая функция PHP может превратить кириллицу, да, собственно, и латиницу, тоже, можно, в эти цифровые юникодные символы?
Осталось, только, её найти, и дело сделано!
Не может быть, чтобы такой функции не было, это, ведь, не только моя проблема. | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 16:01)
| | Если ваш сервер по умолчанию это utf, ваши скрипты тоже этой кодировки, то никакого преобразования не требуется. А вот от куда у вас берется иникод? | |
|
|
|
|
|
|
|
для: sim5
(25.12.2010 в 16:21)
| | Извините, не понял вопрос.
Есть же функция, htmlspecialchars(), которая переводит HTML-символы в цифру.
Неужели нет до сих пор функции, переводящей кириллицу и латиницу в цифру? | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 16:27)
| | Ну-ка откройте мануал и почитайте чем занимается функция htmlspecialchars().
Что значит перевести кириллицу и латиницу в цифру?
О какой цифре вы речь ведете? | |
|
|
|
|
|
|
|
для: sim5
(25.12.2010 в 16:41)
| | Странный вопрос.
У любой русской, да и не только русской, а вообще любой, хоть китайской, буквы есть цифровой эквивалент в Юникоде, и
эти-то эквиваленты я и написал в $text
$text = 'Welcome! ПРИВЕТ!';
|
http://ru.wikipedia.org/wiki/BOM | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 17:26)
| | >У любой русской, да и не только русской, а вообще любой, хоть китайской, буквы есть цифровой эквивалент в Юникоде,
и эти цифровые эквивалены замечательно себе присутствуют в слегка закодированном в транспортных целях виде, в кодировке UTF-8 безо всяких специальных преобразований.
Не накручивайте лишнего. | |
|
|
|
|
|
|
|
для: Trianon
(25.12.2010 в 17:45)
| | Хорошо, а как мне иначе добиться отображения русского текста?
Я, что-то, не уловил Ваше предложение, ведь, по Вашему, так мне и iconv() не нужна, раз у меня документ в UTF-8, но, вот, только, текст-то не отображается, если Вы картинки, конечно, смотрели. | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 18:08)
| | Еще раз повторяю, если у вас и сервер по умолчанию в utf, и вы пишите скрипты свои в редакторое, который сохраняет их в utf, то от куда у вас это html-представление взялось? Вы что его сами специально руками вводите?
Если utf, то не надо никаких конвертаций. Разберитесь вы с настройками своего сервера и редактора, и вопрос будет закрыт. | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 17:26)
| | У вас в голове каша. В компьютере все цифровое, нецифрового просто нет. Htmlspecialchars ничего не конвертирует ни в какую цифру, она конвертирует всего лишь некоторые симоволы в их html-представления, а не в цифру, ибо еще раз повторю - все цифра, и utf, и windows-1251, и другое.
Это вы написали то, чего у вас вообще не должно быть, если вы пишите и работаете в utf, о чем вы упоминали ранее. Вопрос, от куда у вас это взялось? Ясен теперь вопрос? | |
|
|
|
|
|
|
|
для: sim5
(25.12.2010 в 18:04)
| | Эти символы я сам впечатал вместо русских букв, так как символы отображаются, а буквы нет. | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 18:10)
| | А какого фига вы их печатаете? Выше смотрите. | |
|
|
|
|
|
|
|
для: sim5
(25.12.2010 в 19:12)
| | Это HTML-эквиваленты русских букв, они есть "в природе", так как не у всех есть русская клавиатура.
Вы в первый раз в жизни видите эти эквиваленты?
Так же, как не у всех есть знак кавычек-ёлочек, так же, не у всех, есть и русские буквы.
Важно то, что этот способ работает реально. Единственное неудобство - приходится вводить их рукой, так как я не нашёл в PHP функцию, которая переводила бы русские буквы в их эквиваленты, которые есть в спецификации HTML, если Вам точно нужно знать, откуда я это знаю.
Когда я сделал, как Вы показывали выше,
<?php
$im = imagecreatetruecolor(350, 36);
$white = imagecolorallocate($im, 0, 0, 0);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
$text = 'TEXT: Вы не правы!';
$font = 'arial.ttf';
imagettftext($im, 20, 0, 11, 34, $grey, $font, $text);
imagettftext($im, 20, 0, 10, 33, $black, $font, $text);
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>
|
То предупреждения:
Warning: imagettftext() [function.imagettftext]: any2eucjp(): invalid code in input string in /usr/home/.../.../ttf4.php on line 9
Warning: imagettftext() [function.imagettftext]: any2eucjp(): invalid code in input string in /usr/home/.../.../ttf4.php on line 10
Warning: Cannot modify header information - headers already sent by (output started at /usr/home/.../.../ttf4.php:9) in /usr/home/.../.../ttf4.php on line 11
Или Вы не верите, что сервер не выдаёт картинку? | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 19:14)
| | Вам теории охота? Тогда сами с собою, а мне недосуг зря языком чесать.
И так, последний раз - если ваш сервер работает в utf (вы вообще уверены в этом), php-редактор, которым вы пишите код тоже сохраняет файлы в utf (это давно надо было проверить, без подсказки), то на экране, в редакторе, вы будете видеть привычное "Русский тект", а вот php обработчику уйдет такое "Р СѓСЃСЃРєРёР№ текcС‚", ибо именно так будет выгялдеть utf-8 представление предложения "Русский текст". И если вам охота вбивать ручками, а не настроить как положено редактор свой, то тогда так и пишите, а не вляпывайте html-представления, которые совсем не к месту.
То что я видел в жизни, вам еще только предстоит увидеть. Не порите херни, разберитесь со своим редактром. | |
|
|
|
|
|
|
|
для: sim5
(25.12.2010 в 19:31)
| | Если в этом только дело...
А какой Вы посоветуете текстовый редактор, в таком случае?
Я пользовался обыкновенным Блокнотом (Notepad) из Windows, и ещё Notepad++ | |
|
|
|
|
|
|
|
для: Petter
(25.12.2010 в 19:53)
| | А я пользуюсь нормальным редактром, и не одним phpDesigner, Dreamweaver, HomeSite. Блокнот не надо, он сохранят с BOM, в нем и причина ошибки на вывод заголовка (header), так как BOM был выведен в браузер, а заголовки надо передавать до любого вывода в него. | |
|
|
|
|
 31.3 Кб |
|
|
для: Petter
(25.12.2010 в 19:14)
| | см картинку | |
|
|
|
|
|
|
|
для: Trianon
(25.12.2010 в 19:51)
| | Как интересно!
Пишем одно и то же, а результат разный...
Сейчас буду разбираться с редактором... | |
|
|
|
|
|
|
|
для: Valick
(25.12.2010 в 11:42)
| | Спасибо, Vallick, а сами-то вы проверяли этот код?
угу, код перевода взят из книги Д. Котерова
Читал я эту книгу...
Может он и великий программист, этот автор, но книга вся состоит из опечаток в листингах, практически ни один из примеров не иллюстрирует текст, как и в этом печальном случае, так и не ясно, о чём там речь, и это получилась книга ни о чём, общие рассуждения...
Гораздо интереснее, в смысле практики, было изучать php.net. | |
|
|
|
|
|
|
|
для: Petter
(26.12.2010 в 01:33)
| | решил проверить "пример" из PHP.net
http://ru.php.net/manual/en/function.imagettftext.php
...
и та же самая ошибка - не может открыть найти и открыть font
так я смотрю у Вас все кругом виноватые
Читал я эту книгу...
скорее всего не читали, а листали (на экране компьютера)
более того смею предположить, что у Вас вообще нет ни одной "живой" книги по РНР
это собственно и является причиной того что у Вас ничего не работает
__
программировать как и танцевать нужно учиться, причины по которым можно стать плохим танцором
уже давно известны, а вот с программистами немного сложнее.
---
кстати у Вас Денвер работает или и в этот раз Котеров подсунул Вам фуфел? | |
|
|
|
|
|
|
|
для: Valick
(26.12.2010 в 08:12)
| | Нет, я не устанавливал Apache у себя на компьютере, мне это никогда не было нужно.
Я всегда тестирую на действующих хостингах, конкретно, там, где располагается сайт, над которым я работаю, причём, на одном российском и одном иностранном, и попробую ещё на хостинге Ru-Center, может у них заработает...
Я обычный парень, Клиент, а не сотрудник Сервера, у меня обыкновенный ftp-доступ к виртуальному php-хостингу, как правило, и в моём распоряжении лишь .htaccess, если Вы имеете в виду конфигурирование. | |
|
|
|
|
|
|
|
для: Petter
(26.12.2010 в 13:06)
| | Ни у кого не заработат пока вы не поймете, что проблема не в хостах, РНР и конкретно в этой функции, а проблема у вас. | |
|
|
|
|
 117.7 Кб |
|
|
для: sim5
(26.12.2010 в 13:10)
| | Большое спасибо, sim5!
Действительно, проблема была у меня.
Сменил Блокнот на другой редактор - и тот же самый скрипт заработал.
Большое спасибо за дельный, добрый совет!
Кстати, очень интересный редактор.
И остальным огромное спасибо за отклики.
Теперь всё работает ( см. картинку )! | |
|
|
|
|