|
автор: Екатерина (16.11.2004 в 10:29) |
|
| Подскажите плз как с помощью php можно отображать динамичный прозрачный текст поверх картинки.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: Екатерина
(16.11.2004 в 10:29)
| | Что значит "динамичный текст"? Бегущая строка?
А "прозрачный" что значит? Буквы должны просвечивать? Хм, это возможно... но мне кажется не имеет смысла - лучше подобрать нужный цвет текста.
>как с помощью php
PHP не решает такие задачи - здесь, наверное, вопрос верстки HTML. Меня вот только смущает фраза "динамичный текст"...
Хотя можно и на PHP генерировать картинки с надписями. В любом случае, уточните пожалуйста вопрос. Лучше с примерами. | |
|
|
|
|
автор: Екатерина (16.11.2004 в 11:47) |
|
|
для: glsv (Дизайнер)
(16.11.2004 в 11:00)
| | Вопрос уточнила.
Есть база данных с картинками,
нужно добавлять в них динамично надпись, и эта надпись должна быть прозрачной. | |
|
|
|
|
автор: Екатерина (16.11.2004 в 12:15) |
|
|
для: Екатерина
(16.11.2004 в 11:47)
| | идея в том, чтобы картинки защитить от скачивания | |
|
|
|
|
|
|
|
для: Екатерина
(16.11.2004 в 12:15)
| | Ага, теперь ясно. Это можно сделать с помощью библиотеки GDLib. Узнайте, есть эта библиотека у Вас на сервере или нет. И возможно ли ее установить. А я подкину код, создающий надписи... к завтру. | |
|
|
|
|
автор: Екатерина (16.11.2004 в 14:38) |
|
|
для: glsv (Дизайнер)
(16.11.2004 в 13:35)
| | да есть эта библиотека.
спасибо за помощь | |
|
|
|
|
|
|
|
для: Екатерина
(16.11.2004 в 12:15)
| | - | |
|
|
|
|
|
|
|
для: Екатерина
(16.11.2004 в 11:47)
| | Привожу пример для файлов расширениями jpeg и gif
<?php
// В переменной $imagefile содержится имя файла с изображением
// Если эта переменная пуста, то останавливаем выполнение скрипта
if ($imagefile == "") exit();
// Определяем расширение
// и в зависимости от него вызываем функции создания изображений из файлов
$path_parts = pathinfo($imagefile);
$ext = $path_parts["extension"];
switch ($ext)
{
case "jpg":
$img = imagecreatefromjpeg($imagefile);
break;
case "gif":
$img = imagecreatefromgif($imagefile);
break;
default:
echo "Неизвестное расширение файла";
exit();
}
// Если изображение создано
if ($img)
{
// Назначаем цвет
$color = imagecolorallocatealpha($img, 0, 255, 0, 50);
// Пишем текст поверх изображения
$box = imagettftext($img, 50, 0, 10, 150, $color, "arbat.ttf", "Торговая марка");
// Выводим изображение в браузер
switch ($ext)
{
case "jpg":
header("Content-type: " .image_type_to_mime_type(IMAGETYPE_JPEG));
imagejpeg($img);
break;
case "gif":
header("Content-type: " .image_type_to_mime_type(IMAGETYPE_GIF));
imagegif($img);
break;
default:
echo "Неизвестное расширение файла";
exit();
}
}
?>
|
int imagecolorallocatealpha(resource image, int red, int green, int blue, int alpha)
Функция возвращает идентификатор цвета для изображения image, представленный RGB-компонентами.
Полученный идентификатор цвета далее может использоваться для функций рисования.
Функция imagecolorallocatealpha() должна вызываться для каждого цвета, используемого при рисовании изображения image.
Параметры red, green, blue — являются RGB компонентами и их значения лежат в диапазоне от 0 до 255 или от 0x00 до 0хFF в шестнадцатеричном формате.
Значения параметра alpha лежат в диапазоне от 0 до 127. Значение alpha = 0 определяет полную непрозрачность. Значение alpha = 127 соответствует полностью прозрачному цвету.
array imagettftext (resource image, int size, int angle,
int x, int y, int color,
string fontfile, string text)
size — размер шрифта в пикселях.
angle — угол поворота текста. Поворот осуществляется против часовой стрелки. Угол 0 градусов соответствует направлению на 3 часа.
x, y — координаты точки, с которой начинается запись текста. Приблизительно соответствует левому верхнему углу первого символа.
color — идентификатор цвета текста.
font_file — имя файла со шрифтом.
Функция возвращает массив координат 4 вершин прямоугольника, в который будет вписан текст.
Вершины перечисляются в следующем порядке: нижняя левая, нижняя правая, верхняя правая, верхняя левая.
Примечание
Для работы функция требует библиотеку Free Type.
Проверить ее наличие можно, выполнив функцию phpinfo().
Сведения о ней будут находиться в разделе gd.
// Здесь приведены выдержки из будущей книги "Профессиональный сайт на PHP 5"
-------------------------------------------------
Вышеприведенный скрипт следует записать в отдельный файл, например image.php,
а изображение генерировать вызывая этот скрипт из другого файла:
<?
// Здесь будет блок кода для получения имен файлов изображения из Вашей
// базы данных
// Для примера напишем так:
$imagefile="1.jpg";
?>
<img src="image.php?imagefile=<?= $imagefile ?>">
|
Таким образом в теге <img> пишем обращение к скрипту, которые будет рисовать прозрачный текст
поверх изображения. В параметре imagefile передаем имя изображения, на которое нужно наложить текст. | |
|
|
|
|
автор: Екатерина (17.11.2004 в 15:52) |
|
|
для: glsv (Дизайнер)
(16.11.2004 в 23:10)
| | все получилось.
спасибо очень выручили | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(16.11.2004 в 23:10)
| | Уважаемый Дизайнер!
Пробовал использовать Ваш скрипт, но он почему то не работает!
Выводиться картинка с неправельным путем!
Права на папку были 777!
Вот что пишет phpinfo();
GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with freetype
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled | |
|
|
|
|
|
|
|
для: Artemy
(27.10.2005 в 11:37)
| | Пробовал вставить print 1; die(); послу условия if($img){}, но ничего не выводится!
Еще есть одна проблема с функцией imagestring(), если печатать русский текст, то выводить абракадабра, пробовал перекодировать туду-сюда функцией convert_cyr_string();, но ни каких результатов это не принесло, такая же ерунда!
Как это лечится? | |
|
|
|
|
|
|
|
для: Екатерина
(16.11.2004 в 10:29)
| | А нельзя просто картинку задавать через background-image? | |
|
|
|
|
|
|
|
для: Axxil
(16.11.2004 в 11:01)
| | лучше через Flash, бакграунды тоже можно сохранять одним кликом, а с Флашем повозиться придется. я такое видела даже на статичных картинках. а вообще, нельзя защитить от копирования то, что выложено для всеобщего обозрения в интернет. выход - делать картинки такого плохого качества, чтобы никому не захотелось их украсть :) | |
|
|
|