Изображение в PHP(часть 3)
08.10.2009 13:57
Хочу привести еще один пример того как можно использовать средства PHP для наложения так называемых водяных знаков(текста) на изображения. Другой пример я приводил в «Изображения в PHP(часть вторая)» Вот пример для файлов c расширениями jpeg, png и gif.
<?php
if(isset($_GET['imagefile']))
$imagefile= $_GET['imagefile'];
// В переменной $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;
case "png":
$img = imagecreatefrompng($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;
case "png":
header("Content-type: " .image_type_to_mime_type(IMAGETYPE_PNG));
imagepng($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.
Приведенный в начале статьи скрипт следует записать в отдельный файл, например image.php, а изображение генерировать вызывая этот скрипт из другого файла. Для примера напишем так:
<img src="http://site.ru/image.php?imagefile=http://site.ru/image.jpg">
Где image.jpg изображение на которое необходимо нанести прозрачный текст(водяной знак) с помощью файла image.php. Таким образом в теге <img> пишем обращение к скрипту, которые будет рисовать прозрачный текст поверх изображения. В параметре imagefile передаем имя изображения, на которое нужно наложить текст.

