В гугле на эту тему находятся в основном сервисы по созданию динамических обложек для вк. А вот каких-либо статей на эту тему не очень много, а годных и того меньше.
Кстати, если вы ищете именно сервис по созданию динамических обложек для группы ВКонтакте, вы можете заказать обложку у нас. По вашему дизайну, с любым функционалом. Всё в лучшем виде. Просто напишите нам здесь или в нашей группе ВКонтакте.
В этой статье я попробую осветить именно тему создания таких обложек. Попробуем сделать так, чтобы на ней светилась текущая дата.
Загрузка обложки для группы в вк может показаться по началу немного сложной. На самом деле это не так.
Весь процесс выглядит вот так:
1. Используя метод photos.getOwnerCoverPhotoUploadServer отправляем id группы и координаты по которым нужно обрезать изображение. Пока без самого изображения. Чтобы не отправлять эти координаты, можно просто создать картинку размером 795х200. Что я и сделаю в этой статье. Этот метод вернёт ссылку по которой мы будем грузить нашу обложку.
2. Отправляем картинку в посте на полученную в первом пункте ссылку. Тут нет никаких замутов. В ответ мы получим параметры hash и photo.
3. Всё, наша картинка загружена. Просто пока что не стоит. Чтобы её поставить, нужно воспользоваться методом photos.saveOwnerCoverPhoto, сюда нужно передать просто полученные чуть ранее hash и photo.
4. Наслаждаемся картинкой на обложке группы.
5. ????
6. Profit!!!11
Нам потребуется создать файлы fon.php и vk.class.php, а так же скачать нужным нам шрифт в расширении .ttf, достать картинку 795х200 (пусть будет fon-orig.jpg) и всё это положить рядом со скриптами. Так же поставить на крон вызов fon.php в 00:00.
Мы для примера просто напишем на обложке какой сегодня день.
Код максимально простой для понимания. Без обработки ошибок или ещё чего-то. Имейте ввиду. Для серьёзного проекта его придётся изменять.
Содержимое fon.php:
<?php $month = date('n'); //Получаем порядковый номер текущего месяца $months = array('января', 'февраля', 'марта', 'апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'); //Создаём массив с месяцами на русском $current_date = 'Сегодня ' . date('d ' . $months[$month - 1] . ' Y') . ' года'; //Получаем в переменную текущую дату $image = imageCreateFromJpeg('fon-orig.jpg'); //получаем изображение, обложку из файла $white = imagecolorallocate($image, 255, 255, 255); //Добавляем в палитру белый цвет. Мой текст будет именно белым $font = __DIR__ . '/OpenSans-Regular.ttf'; //Шрифт $center = 398; //Середина изображения, т.к. полное изображение 795 пикселей. Ну тип 795 / 2 = 398 и 1 в остатке, но это не критично $ttf_box = imagettfbbox(20, 0, $font, $current_date); //ширина текста //В строчке выше //20 - это размер текста //0 - это угол наклона текста //Ну и последние параметры это шрифт и текст $position = $center - round(($ttf_box[2]-$ttf_box[0])/2); //Место, откуда нужно будет начать писать текст чтобы тот оказался посередине //Пишем тот самый текст imagefttext($image, 20, 0, $position, 27, $white, $font, $current_date); imagejpeg($image, 'fon.jpg', 100); //Сохраняем полученную картинку в fon.jpg в 100% качестве imagedestroy($image); //Освобождаем include_once ('vk.class.php'); //Подключаем наш vk.class.php //Сразу и создадим этот класс, который будет написан чуть позже //Сюда пишем ключ апи созданный для группы в вк $vk = new vk('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); $url = $vk->PhotoUploadServer(ИД ГРУППЫ); //Вставляем ид группы в эту функцию $photo = $vk->UploadPhoto($url['upload_url'], 'fon.jpg'); //Вставляем изображение, которое нужно отправить $result = $vk->SavePhoto($photo['hash'], $photo['photo']); //Вставляем в обложку загруженную картинку echo "ok";
Содержимое vk.class.php:
<?php //Задаём класс class VK { public $token = ''; //Создаём публичную переменную для токена, который нужно отправлять каждый раз при использовании апи вк public function __construct($token) { $this->token = $token; //Забиваем в переменную токен при конструкте класса } public function PhotoUploadServer($group_id) { //Заполняем массив $data инфой, которую мы через api отправим до вк. О функции api "getOwnerCoverPhotoUploadServer" можно почитать в официальной документации вк $data = array( 'group_id' => $group_id, 'v' => '5.71', //Версия API VK. Узнать нужную можно через официальную документацию вк ); //Получаем ответ через функцию отправки до апи, которую создадим ниже $out = $this->request('https://api.vk.com/method/photos.getOwnerCoverPhotoUploadServer', $data); //И пусть функция вернёт ответ return $out['response']; } public function UploadPhoto($url, $file) { $data = array( 'photo' => new CURLFile($file), //Отправляем нашу обложку на сервера вк ); //Получаем ответ через функцию отправки до апи, которую создадим ниже $out = $this->request($url, $data); //И пусть функция вернёт ответ return $out; } public function SavePhoto($hash, $photo) { $data = array( 'hash' => $hash, 'photo' => $photo, 'v' => '5.71', //Версия API VK. Узнать нужную можно через официальную документацию вк ); //Получаем ответ через функцию отправки до апи, которую создадим ниже $out = $this->request('https://api.vk.com/method/photos.saveOwnerCoverPhoto', $data); //И пусть функция вернёт ответ return $out; } public function request($url, $data = array()) { $curl = curl_init(); //мутим курл-мурл в переменную. Для отправки предпочтительнее использовать курл, но можно и через file_get_contents если сервер не поддерживает $data['access_token'] = $this->token; //токен, который нужно отправить вместе с запросом тоже нужно добавить в дату curl_setopt($curl, CURLOPT_URL, $url); //Сюда забивается ссылка, куда отправить $data curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); //Отправляем через POST curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); //Сами данные отправляемые $out = json_decode(curl_exec($curl), true); //Получаем результат выполнения, который сразу расшифровываем из JSON'a в массив для удобства curl_close($curl); //Закрываем курл return $out; //Отправляем ответ в виде массива } }
Выглядеть это будет примерно как в нашей группе в вк. Или на сплеш-арте в начале статьи.
Пс, вы можете заказать максимально сложные обложки для своей группы ВКонтакте у нас, через пункт "Работа" вверху сайта, или же через нашу группу ВКонтакте.