Показаны сообщения с ярлыком графика. Показать все сообщения
Показаны сообщения с ярлыком графика. Показать все сообщения

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");