10 октября 2010 г.

Логотип сайта на картинках

Часто возникает задача на картинках своего сайта печатать название сайта или помещать его логотип. Нижеприведенный код позволяет при закачке картинки на сервер рисовать в нижнем правом углу логотип.

Нам понадобится:
1. Библиотека GD2 (благо почти га всех хостингах она есть).
2. Файл с самим логотипом logo.png (не забудьте сделать фон прозрачным)

Собственно код:
$uploaddir="../pic/"; //путь до каталога с картинками
$file_name="pic.jpg"; //имя файла с картинкой
$logo_h = getimagesize("logo.png");
//$logo_h = getimagesize(imagettftext("text")); 
//если надо писать текст
$pic_h = getimagesize($uploaddir.$file_name);

$logo = imagecreatefrompng  ("znak.png");
//$logo = imagettftext("text");
$pic = imagecreatefromjpeg ($uploaddir.$file_name);

//вычисляем координаты для размещения логотипа на картинке
imagecopy ($pic, $logo,
$pic_h[0] - $logo_h[0],
$pic_h[1] - $logo_h[1],
0,0,
$logo_h[0],
$logo_h[1]);

//сохраняем картинку с логотипом
imagejpeg ($pic, $uploaddir."new_".$file_name, "100");

//убиваем переменные
imagedestroy ($logo);
imagedestroy ($pic);
Готовые картинки сохраняются в том же каталоге, но с препиской new_ в начале имени файла.

Данный код следует вставить перед загрузкой картинок и проверять. Если файла new_ нет, то запускаем этот код и генерируем картинку, иначе грузим из кэша. Проверить существование файла можно функцией:
is_file("pic.jpg");
Или же рисуем логотип при закачке файла на сервер, но тогда надо добавить код, удаляющий оригинал. Например так:
unlink("pic.jpg");

1 комментарий:

  1. Тоже решал когда-то подобную задачу (правда там гораздо больше требований к результату было). А так весьма полезная статья.

    ОтветитьУдалить