[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Добавление текста на картинку
Towelie
Здравствуйте,я новичок в php.
Хочу сделать картинку с обратным отсчетом, но не получается, вот нашел в нете скрипт:
<?php
$imya = $_GET['imya']; //получаем значение параметра с именем файла
$ext = $_GET['ext']; //получаем значение с расширением файла
$img = $imya.'.'.$ext; //полное имя файла
if ($ext === 'gif') //если графический формат GIF
{
$pic = ImageCreateFromgif($img); //открываем изображение
Header("Content-type: image/gif"); //указываем, что это рисунок в формате GIF
$color=ImageColorAllocate($pic, 250, 0, 0); //получаем идентификатор красного цвета
$h = ImageSY($pic)5; /* узнаем высоту рисунка и отнимаем 5 пикселей для размещения текста */
$w = ImageSX($pic)85; /* получаем ширину рисунка и отнимаем от этого значение 85 пикселей */
ImageTTFtext($pic, 12, 0, $w, $h, $color, 'Times', 'My Web-site'); //вывод текста на изображение
Imagegif($pic); //сохраняем изображение
ImageDestroy($pic); //освобождаем память
}

if ($ext === 'jpg') //если переданное расширение идентично строке «jpg»
{
$pic = ImageCreateFromjpeg($img); //открываем рисунок в формате JPEG
Header("Content-type: image/jpeg"); //указываем на тип передаваемых данных
$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');
Imagejpeg($pic); //сохраняем рисунок в формате JPEG
ImageDestroy($pic); //освобождаем память и закрываем изображение
}

if ($ext === 'png') //если рисунок следует отобразить в формате PNG
{
$pic = ImageCreateFromPng($img); //открываем рисунок в формате PNG
Header("Content-type: image/png"); //указываем тип содержимого
$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');
ImagePng($pic); //сохранение рисунка в формате PNG
ImageDestroy($pic); //завершаем работу над изображением и освобождаем память
}
?>
<p> </p>

и на страничке:

<html>
<head><title>
Тест-img</title></head>
<body>
<img
src="img.php?imya=luna&ext=png">
</body>
</html>


Но когда на сайте все добавил, изображения не появляется, при прямом открытие изображения пишется:
Цитата
Parse error: parse error, unexpected T_STRING in /home/t/theendisnear.h1.ru/WWW/picture.php on line 10

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



Спустя 13 минут, 40 секунд (26.08.2010 - 16:37) Nikitian написал(а):
Цитата
Parse error: parse error, unexpected T_STRING in /home/t/theendisnear.h1.ru/WWW/picture.php on line 10

Скрипт такое имя имеет или такое?
Цитата
<img src="img.php?imya=luna&ext=png">

И покажите уже эту загадочную 10 строчку из файла /home/t/theendisnear.h1.ru/WWW/picture.php

Спустя 7 минут, 36 секунд (26.08.2010 - 16:45) Towelie написал(а):
Цитата (Nikitian @ 26.08.2010 - 13:37)
Цитата
Parse error: parse error, unexpected T_STRING in /home/t/theendisnear.h1.ru/WWW/picture.php on line 10

Скрипт такое имя имеет или такое?
Цитата
<img src="img.php?imya=luna&ext=png">

И покажите уже эту загадочную 10 строчку из файла /home/t/theendisnear.h1.ru/WWW/picture.php

1)да,такое имя,я потом исправил,а в посте забыл изменить
2)
$h = ImageSY($pic)5; /* узнаем высоту рисунка и отнимаем 5 пикселей для размещения текста */

Спустя 13 минут, 42 секунды (26.08.2010 - 16:58) Nikitian написал(а):
В вашем коде минус минусом не является (: Просто сотрите его и напишите минус сами, клавиатурой. Видимо откуда-то копировали код, а там минус заменился каким-то коротким дефисом.

Все минусы замените в коде - они все неправильные

Спустя 9 минут, 4 секунды (26.08.2010 - 17:08) Towelie написал(а):
Цитата (Nikitian @ 26.08.2010 - 13:58)
В вашем коде минус минусом не является (: Просто сотрите его и напишите минус сами, клавиатурой. Видимо откуда-то копировали код, а там минус заменился каким-то коротким дефисом.

Все минусы замените в коде - они все неправильные

Да,спасибо,и правда там были не минусы,но возникло еще пара проблем:
в примере, откуда я это взял строка была
picture.php?na=luna&ext=jpg"
, но ведь по коду вместо "na" должно быть "imya",если делать строку с "na" то выводит:
Warning: imagecreatefromjpeg(.jpg): failed to open stream: No such file or directory in /home/t/theendisnear.h1.ru/WWW/picture.php on line 19

Warning: Cannot modify header information - headers already sent by (output started at /home/t/theendisnear.h1.ru/WWW/picture.php:19) in /home/t/theendisnear.h1.ru/WWW/picture.php on line 20

Warning: imagecolorallocate(): supplied argument is not a valid Image resource in /home/t/theendisnear.h1.ru/WWW/picture.php on line 21

Warning: imagesy(): supplied argument is not a valid Image resource in /home/t/theendisnear.h1.ru/WWW/picture.php on line 23

Warning: imagesx(): supplied argument is not a valid Image resource in /home/t/theendisnear.h1.ru/WWW/picture.php on line 24

Warning: imagettftext(): supplied argument is not a valid Image resource in /home/t/theendisnear.h1.ru/WWW/picture.php on line 26

Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/t/theendisnear.h1.ru/WWW/picture.php on line 27

Warning: imagedestroy(): supplied argument is not a valid Image resource in /home/t/theendisnear.h1.ru/WWW/picture.php on line 28

а если "imya" то просто что картинку невозможно отоборазить.

Спустя 4 минуты, 2 секунды (26.08.2010 - 17:12) Nikitian написал(а):
Цитата
а если "imya" то просто что картинку невозможно отоборазить.

По коду именно это и надо делать. Подозреваю, что ваш хостер в конец картинки пихает свой код JS. Уберите это и попробуйте открыть картинку браузером:
Header("Content-type: image/png"); //указываем тип содержимого

Спустя 4 минуты, 16 секунд (26.08.2010 - 17:16) Towelie написал(а):
если эту строку убрать то выводит
Warning: imagettftext(): Could not find/open font in /home/t/theendisnear.h1.ru/WWW/picture.php on line 24

и дальше бред,похожий на необработанную картинку.В конце нечто похожего на ява скрипт нету.

Спустя 7 минут, 21 секунда (26.08.2010 - 17:23) Nikitian написал(а):
В качестве шрифта надо указывать не имя шрифта, а ссылку на файл шрифта.
imagettftext()

Спустя 27 минут, 11 секунд (26.08.2010 - 17:50) Towelie написал(а):
Спасибо, изменил вот теперь так:
<?php
define('_AM_CRON_DAY1', 'день');
define('_AM_CRON_DAY2', 'дня');
define('_AM_CRON_DAY3', 'дней');
define('_AM_CRON_HOUR1', 'час');
define('_AM_CRON_HOUR2', 'часа');
define('_AM_CRON_HOUR3', 'часов');
define('_AM_CRON_MIN1', 'минута');
define('_AM_CRON_MIN2', 'минуты');
define('_AM_CRON_MIN3', 'минут');
define('_AM_CRON_SEC1', 'секунда');
define('_AM_CRON_SEC2', 'секунды');
define('_AM_CRON_SEC3', 'секунд');

$imya = $_GET['imya']; //получаем значение параметра с именем файла
$ext = $_GET['ext']; //получаем значение с расширением файла
$img = $imya.'.'.$ext; //полное имя файла

function cron_wordCase($number, $w1, $w2, $w5) {
if ( floor(($number%100)/10) == 1)
return $w5;
if ($number%10 >= 2 and $number%10 <= 4)
return $w2;
if ($number%10 == 1)
return $w1;
return $w5;
}

function cron_formatNumWord($number, $w1, $w2, $w5) {
return $number > 0?($number . ' ' . cron_wordCase($number, $w1, $w2, $w5) . ' '):'';
}

function cron_time2string($time) {
$s = $time % 60;
$m = floor($time / 60) % 60;
$h = floor($time / (60 * 60)) %24;
$d = floor($time / (60 * 60 * 24));
return
cron_formatNumWord($d, _AM_CRON_DAY1, _AM_CRON_DAY2, _AM_CRON_DAY3) .
cron_formatNumWord($h, _AM_CRON_HOUR1, _AM_CRON_HOUR2, _AM_CRON_HOUR3) .
cron_formatNumWord($m, _AM_CRON_MIN1, _AM_CRON_MIN2, _AM_CRON_MIN3) .
cron_formatNumWord($s, 'секунда', 'секунды', 'секунд');
}

$date = strtotime("21 December 2012");
$sec=$date - time();
$date = cron_time2string($date);

if ($ext === 'gif') //если графический формат GIF
{
$pic = ImageCreateFromgif($img); //открываем изображение
Header("Content-type: image/gif");
$color=ImageColorAllocate($pic, 250, 0, 0); //получаем идентификатор красного цвета
$h = ImageSY($pic) - 5; /* узнаем высоту рисунка и отнимаем 5 пикселей для размещения текста */
$w = 5; /* получаем ширину рисунка и отнимаем от этого значение 85 пикселей */
ImageTTFtext($pic, 12, 0, $w, $h, $color, 'times.ttf', $date); //вывод текста на изображение
Imagegif($pic); //сохраняем изображение
ImageDestroy($pic); //освобождаем память
}

if ($ext === 'jpg') //если переданное расширение идентично строке «jpg»
{
$pic = ImageCreateFromjpeg($img); //открываем рисунок в формате JPEG
Header("Content-type: image/jpeg");
$color=ImageColorAllocate($pic, 250, 0, 0); //получаем идентификатор цвета
/* определяем место размещения текста по вертикали и горизонтали */

$h = ImageSY($pic) - 5; //высота
$w = 5; //ширина
/* выводим текст на изображение */

ImageTTFtext($pic, 12, 0, $w, $h, $color, 'times.ttf', $date);
Imagejpeg($pic); //сохраняем рисунок в формате JPEG
ImageDestroy($pic); //освобождаем память и закрываем изображение
}

if ($ext === 'png') //если рисунок следует отобразить в формате PNG
{
$pic = ImageCreateFromPng($img); //открываем рисунок в формате PNG
Header("Content-type: image/png");
$color=ImageColorAllocate($pic, 250, 0, 0); //выбор цвета
/* определяем размещение текста на картинке */

$h = ImageSY($pic) - 5;
$w = 5;
//вывод текста
ImageTTFtext($pic, 12, 0, $w, $h, $color, 'times.ttf', $date);
ImagePng($pic); //сохранение рисунка в формате PNG
ImageDestroy($pic); //завершаем работу над изображением и освобождаем память
}
?>
<p> </p>

Но текст в неправильной кодировке выводит,как с этим бороться,чтобы не только английскими буквами выводилось?

Спустя 8 минут, 52 секунды (26.08.2010 - 17:59) Nikitian написал(а):
Выводите в utf-8.

ImageTTFtext($pic, 12, 0, $w, $h, $color, 'times.ttf', iconv('cp1251','utf-8',$date));

Спустя 10 минут, 43 секунды (26.08.2010 - 18:10) Towelie написал(а):
Спасибо.
Тут теперь трабла с временем,
$date - time(); 

Вроде, time() неработает я почтиал time() но не особо понял как ее вызывать.

Спустя 7 минут, 16 секунд (26.08.2010 - 18:17) Nikitian написал(а):
В чём выражается "трабла"?

Спустя 1 минута, 19 секунд (26.08.2010 - 18:19) Towelie написал(а):
пишет что остается 14653 дня до `12 года

Спустя 1 минута, 7 секунд (26.08.2010 - 18:20) Nikitian написал(а):
$date = cron_time2string($sec);

Спустя 19 часов, 30 минут, 28 секунд (27.08.2010 - 13:50) Towelie написал(а):
Спасибо, а есть возможность чтобы время на картинке обновлялось в реальном времени, подозреваю что это не пхп а ява, но в какую сторону копать и возможно ли это?

Спустя 7 минут, 1 секунда (27.08.2010 - 13:57) Nikitian написал(а):
Сделать блок с картинкой в бэкграунде, а в этом блоке js-ом рисовать время или что хотите как хотите. Можно и канвой заморочиться, но там будет гемор с кроссбраузерностью.

Спустя 1 минута, 1 секунда (27.08.2010 - 13:58) Towelie написал(а):
а где про это поподробнее почитать?

Спустя 10 минут, 55 секунд (27.08.2010 - 14:09) Nikitian написал(а):
Про таймер на js тут

Спустя 7 минут, 15 секунд (27.08.2010 - 14:16) Towelie написал(а):
а про блок?

Спустя 1 минута, 17 секунд (27.08.2010 - 14:18) Nikitian написал(а):

<style>
#yourblock{background:url(/path/to/your/image.jpg);}
</style>
<div
id="yourblock"></div>

Спустя 45 минут, 56 секунд (27.08.2010 - 15:04) Towelie написал(а):
Спасибо,а как сделать чтобы динамический текст был снизу и картинка была вся видна,а то сейчас получается сто что текст слева а картинка копиями вряд узкой полосой идет

Спустя 21 минута, 37 секунд (27.08.2010 - 15:25) Nikitian написал(а):
нарисуйте что хотите получить, сверстаю на скорую руку

Спустя 4 минуты, 45 секунд (27.08.2010 - 15:30) Towelie написал(а):
я хочу картинку в натуральную величину,снизу на всю ее ширину текст с прозрачным бэкграундом,сейчас у мнея так :
var displaystring="<span class='lcdstyle'>"+arguments[0]+" <sup> " + days_vord + " </sup> "+arguments[1]+" <sup> " + hours_vord + " </sup> "+arguments[2]+" <sup> " + minutes_vord + " </sup> "+arguments[3]+" <sup> " + sec_vord + " </sup></span>"

это вывод самого таймера.
это стиль:
.lcdstyle{ /*Example CSS to create LCD countdown look*/
background-color:black;
color:white;
font: bold 18px MS Sans Serif;
padding: 3px;
-moz-opacity:.45 !important;
opacity:.45 !important;
filter:alpha(opacity=45);
}

а так собственно все выводится
<style>
#cdcontainer{background:url(picture.php?imya=luna&ext=jpg);}
</style>
<div
id="cdcontainer"></div>

Спустя 12 минут, 4 секунды (27.08.2010 - 15:42) Nikitian написал(а):
Наверно тяпницо влияет: ничего не понял %)

Спустя 4 минуты, 30 секунд (27.08.2010 - 15:46) Towelie написал(а):
Ну, есть картинка,размерами допустим 500х200
Я хочу чтобы была эта картинка в весь ее размер,а снизу на ней мой таймер.
Текст и бэкграунд таймера были прозрачными.Все.

Спустя 20 минут, 37 секунд (27.08.2010 - 16:07) Nikitian написал(а):

<div style="background:url(......);width:500px;height:200px;position:relative;">
<span
style="position:absolute;bottom:20px;">текст</span>
</div>


Как-то так
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.