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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ну просто не могу поставить текст на изображение!! Что-то не так 
:(
    Опции темы
anurbol
Дата 14.8.2007, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 30.5.2007
Где: Алматы, Казахстан

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



Очень-очень нужно запихать текст в картинку. Прочел тут все форумы и статьи, прочел в мануале, попробовал все коды - ну никак smile ! Один из испробованных вариантов - 
Код

<?
// load the image from the file specified:
$im = imagecreatefrompng("moya_kartinka.png");
// if there's an error, stop processing the page:
if(!$im)
{
 die("");
}
 
// define some colours to use with the image
$yellow = imagecolorallocate($im, 255, 255, 0);
$black = imagecolorallocate($im, 0, 0, 0);
 
// get the width and the height of the image
$width = imagesx($im);
$height = imagesy($im);
 
// draw a black rectangle across the bottom, say, 20 pixels of the image:
imagefilledrectangle($im, 0, ($height-20) , $width, $height, $black);
 
// now we want to write in the centre of the rectangle:
$font = 4; // store the int ID of the system font we're using in $font
$text = "sometext"; // store the text we're going to write in $text
// calculate the left position of the text:
$leftTextPos = ( $width - imagefontwidth($font)*strlen($text) )/2;
// finally, write the string:
imagestring($im, $font, $leftTextPos, $height-18, $text, $yellow);
 
// output the image
// tell the browser what we're sending it
Header('Content-type: image/png');
// output the image as a png
imagepng($im);
 
// tidy up
imagedestroy($im);
?>

Выдает: ничего...и еще очень удивил исходный код:
  • <html>
  • <head>
  •   <title></title>
  • </head>
  • <body>
  • <?
  • // load the image from the file specified:
  • $im = imagecreatefrompng("counter.png");
  • // if there's an error, stop processing the page:
  • if(!$im)
  • {
  •  die("");
  • }
  •  
  • // define some colours to use with the image
  • $yellow = imagecolorallocate($im, 255, 255, 0);
  • $black = imagecolorallocate($im, 0, 0, 0);
  •  
  • // get the width and the height of the image
  • $width = imagesx($im);
  • $height = imagesy($im);
  •  
  • // draw a black rectangle across the bottom, say, 20 pixels of the image:
  • imagefilledrectangle($im, 0, ($height-20) , $width, $height, $black);
  •  
  • // now we want to write in the centre of the rectangle:
  • $font = 4; // store the int ID of the system font we're using in $font
  • $text = "vdhri.net"; // store the text we're going to write in $text
  • // calculate the left position of the text:
  • $leftTextPos = ( $width - imagefontwidth($font)*strlen($text) )/2;
  • // finally, write the string:
  • imagestring($im, $font, $leftTextPos, $height-18, $text, $yellow);
  •  
  • // output the image
  • // tell the browser what we're sending it
  • Header('Content-type: image/png');
  • // output the image as a png
  • imagepng($im);
  •  
  • // tidy up
  • imagedestroy($im);
  • ?>
  • </body>
  • </html>
То есть в нем отображается рнр скрипт.
В чем дело? Сервер исправно работает, справляется с другими скриптами. используется РНР5, GD2.
Другой код, скопированный из мануала:
Код

<?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);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// 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);
?> 

Выдает в браузере:
‰PNG  IHDRђЌЯ‡лIDATxњнЬkH“oрk›Ыњі№йж!¦уђgФ25mT9CФLґДyH:ш!€,!Љі­0ЉІ( і°ТІМВ€,L4P—‹fЛE§d¦sC§Оэ?Ьп;цWЛТщ¦oчпУјћлyоk~ёёџы~цt:`†-ДY3їc!JФh4ЩЩЩ3VURRІ#b¶8НЮ°lmmНя ЕMMMН§™ЮYжI"‘xyy‰DўWЇ^M?Z^^.‘HЊ;"†a‹–Й¬ …"//П0’••‘‘‘AAA&&і_a>ZZZ>ю 5556lРЗ=<<ъыы©Tк‚ЋЋaШўтKнжаБѓ†ў†‘‘‘>>>Ж/кHҐТьь|А= Гю ;?ZP{чоэУ%`ц?5ыЦпТjµ………aaaVVVT*•З㥥Ґ577OП>}ъt`` ќN§Сh<O(ѕxсBџ@ ’““Сg‘HdёЁ?}С]iooOOO·іі#“Й</##ЈЅЅ}ъиjµъФ©SЮЮЮT*•ЕbEGG766–””,Ьо†aуҐы}иДёёё–––)‡CCCQ…B155Eџ Bvv¶afOOПЉ+ф™fffъ’233QЋ­­­ю hQ_$эЁбущ h4‰DТџыоЭ;ГС»єєЬЬЬРQ2™ЊVвH$RBB кВ0lс0т-aRRRMMЌ««лъхлнннЙdтИИИЛ—/лккNњ8AҐR:„2чпЯЯЦЦЖбpвввРlhllмБѓ---/^ IHHP(BЎрцнЫђ••ҐЯ ь‰єє:OOПррp‹ebbТРРрдЙ•JµsзОзПџ3™L”¶mЫ6™LfnnгжжF"‘>|шррбГ{чоч‚a˜1НЎЙЎ§П°ЄЄЄЂЗг=zфЖЌќќќ(®R©„B!XYYIҐRDЭ'**кТҐK …‡††˜L&ќNOLLФйt·nЭBГM™тLЇEМННЏ9rэъutM­V ЈўўeVVV‘HЬЅ{ч№sзd2™N§›њњјyу¦юfП°0l2жj.ћћћ\.755•Леў8ќNПЙЙЂoЯѕЈ …BЂчпЯышшШЪЪў ѓБиллЛОО^ЅzuOOПjрцц¶ґґLNNFЧ$‰ССС V«еr9КAS6{{ы¤¤$WWW ©©©!!!sяю†-0cЮЦЧЧ@MMНЫ·oE"СЊ9џ>}ъъх+‡ГЩ±cЗщузї|щ.Ѓ»»;…BЙММ$зШIЩl¶··7к†ZТТjµjµЪ°N—еЛ—ћѕyужєєє№ ЌaШB3fГкннЂССССССеЊЋЋў†•››ысгЗЄЄ*ЌFSYY‰nУx<ЮцнЫ8`cc3·( ›Н6Њи{џV«EєєєАЬЬЬББaКйSъ†a‹Љ1ЦДДДДДшыыя$ µ32™ьиСЈвввТТR™LЦСС1>>ЮЮЮ~цмЩььькккµkЧОЎЃ`8Ѕљjaєя®Јa¶Tіa±ЩмћћҐRіjХЄYу‰DbZZЪЦ­[ҐRikkkmmmKKKccЈZ­NJJЄЇЇЧЇmэ–YџўІ¶¶оииP©TєioЄ@“D Г'c.єЂ\.W*•S544ШЩЩсщ|©T нннyyyjµљБ`¬Yі&--­  аоЭ»h?±«« н9.„аа`иммT©TSб, [МЊЩ°’’’ ііуюэыS?~ј··W"‘ФЦЦцчч«TЄ¬¬¬«WЇ>|x||ь?Ґ‰<ПГГh4Ъ%њукыO §зеrщ›7o гНННХХХFГ0c1f;€ЏЏ_№r%\№rE$ЌЊЊЂBЎHIIAЌ ,,L©TZZZz{{Ј Оњ9ЈСh@«Х–••ежжЂџџЌFэрFјY‹ЋЋ˜њњМЙЙ)--EБ§OџFEEЎeё)<=====?~<· †aЖbМ†E"‘ћ={жии811‘ќќЅlЩ2KKK.—‹ћПвущююю7nD“¦’’‹566vмШ1:ќОfіНММвгг•JҐ‹‹KhhЁџџxyyЎ5©kЧ®YXXфххҐФттr‡ЈT*йt:ќNЏЊЊмллуттB_Д0№µµµµµµ¬¬L&“Н!€a˜±щ†ЛЖЖF,§¤¤8::R(”ЎЎ!Ќжбб‘љљОзух‹сNNNMMMЃАОООДДd``ЂD"№ёёДЖЖ …B777ф›DWWЧ .0™МЙЙЙ±±±“'Oк§љ{{ы¦¦¦M›6YYYi4љЙЙIwwчффtф)•JќТі`xxНзД0lюжІKЁУй~тfQ ‹ўў"±X,‘Hъъъ4 ЌFі·· rrr2Мttt¬ЁЁЁЇЇ—Йdccc¦¦¦vvvѕѕѕѕѕѕъНѕ}ыц­[·охлЧCCCT*хычпt:}z ?ЄJ(ъъъ–——O‰s№ЬКККЪЪZ©T:88H&“Дb1ъ †ЇЩљсКїД0МXУ·цяпедд\ѕ|Y ЖµZm@@ЂX, ЬµkЧћ={юT…†НИш{p‹_hhhOOOQQ‘P(BA№\ћ˜˜(‹I$R`` ю‡ђ†-г ТУУ‹ЉЉЂ@ XZZЋЏЏЈgЗИdт–-[ььь2228О®Г°[ВЇHћЏВВBggз;wоtww‡гддlmm‹»†-Bй ikkkjjкооV«ХЃЙd:;;іX¬?]†a3ш«†aKЛЯёиЋaШ…†aKnX†-яz9l[k‰„єIEND®B`‚ 
Ну а тут что не так? Подскажите народ, плиз. Времени нет, надо уже заканчивать работу, а тут на мелочи застрял. 








PM MAIL   Вверх
Golda
Дата 15.8.2007, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

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



В первом случае нужно 

1) убрать HTML-разметку
(<html> <head>  <title></title> </head> <body> и т.д.)
2) замените <? на <?php

Странно то, что хотя Вы явно высылаете header('Content-type: image/png') в обоих случаях, броузер интерпритирует ответ как HTML. Скорее всего где-то еще отсылается header с другим Content-type. Такое поведение повторяется во всех броузерах? Посмотрите curl-ом, или каким нибудь плагином броузера, и выложите сюда весь набор заголовков, которые присылаются в ответ на запрос. 


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
MoLeX
Дата 15.8.2007, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



anurbol, первый тобой приведенный скрипт отлично работает на 3 серверах различной конфигурации. Он тебе выжает мета теги при непосредственном обращенние к скрипту или ты его пытаешься "прикрепить" к дургому скритпу?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
anurbol
Дата 16.8.2007, 00:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 30.5.2007
Где: Алматы, Казахстан

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



Черт. Я даже как-то и не обращал внимание на разметку нтмl. Просто я работаю в рнр-expert-editor. там это автоматически создается. Убрал разметку - и второй скрипт заработал. Вообще в последнее время этот ide начал меня раздражать. много глюков. один из них - когда <?php находится в первой строке, а не во второй, подсветки нет никакой. А вы чем пользуетесь? А я еще думал, что проблема в gd2, перерыл весь интернет и весь каталог багов рнр. Ладно, вобщем второй скрипт заработал, однако мне вообще нужен текст на своей картинке, а не на белом фоне, и когда я заменяю 6 строку на $im = imagecreatefrompng("counter.png"); и убираю 12 строку, выдавало что-то вроде invalid png file. Я подумал, что это из-за того, что counter.png раньше была gif. и поменял все на gif. заработало. Ну а первый скрипт - какой-то заколдованный... - здесь я подумал, вспомнил что-то про хедеры и куки из учебника и решил поколдовать еще раз-убрал все отступы и... все заработало!!! 
Короче говоря, теперь никогда не забуду 2 вещи: 
1. Нельзя переимновывать image.gif в image.png
2. Нельзя иметь какое-либо лишнее пространство перед хедером.
P.S. Golda, снова благодарю за то, что направили меня в нужном направлении!
PM MAIL   Вверх
Golda
Дата 16.8.2007, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

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



На здоровье  smile 


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




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


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

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