Open Graph генератор.

53ny4 53ny4 27 Октября

Привет, {username}!

В первую очередь, хочу сказать благодарность разработчику этого сайта и платформы. Мне даже сложно представить сколько сил ушло. У меня бы терпения не хватило =) Чувак, ты крут!


Хочу поделиться небольшим инструментом, который я разработал, чтобы упростить жизнь себе и, возможно, другим разработчикам.

Часто сталкивался с тем, что для каждого сайта(клинта) нужно создавать уникальное OG-изображение, чтобы оно красиво отображалось при шаринге в социальных сетях.
Пробовал разные библиотеки, но, опять же…использовать каждую из них для каких-то определённых задач…я считаю не логично.

Я написал простой генератор OG-изображений на PHP с использованием https://github.com/php-imagine/Imagine библтотеки . Он позволяет программно создавать изображения с заданным фоном, текстом и даже водяными знаками.

Основные возможности:

  • Фон: можно использовать однотонный цвет или изображение.
  • Текст: добавляйте текст с настройками шрифта, размера, цвета и выравнивания.
  • Фон под текстом: добавляйте полупрозрачный фон под текст для лучшей читабельности.
  • Водяные знаки: добавляйте логотипы или водяные знаки с настройками позиции и прозрачности.

Текст и водяной знак можно использовать многократною

<?php

require 'vendor/autoload.php';

use s3ny4\OgImage\OgImage;
use s3ny4\OgImage\OgBackground;
use s3ny4\OgImage\OgText;

// Создаем новый объект OgImage с размером 1200x630
$ogImage = new OgImage(1200, 630);

// Устанавливаем фон (можно использовать цвет или изображение)
$ogBackground = new OgBackground('#1e90ff'); // Синий фон
// Или использовать изображение:
// $ogBackground = new OgBackground('/path/to/background.jpg');
$ogImage->setBackground($ogBackground);

// Добавляем текст
$ogText = new OgText();
$ogText->setText('Добро пожаловать в мой блог!');
$ogText->setPosition('center', 'center');
$ogText->setColor('ffffff'); // Белый текст
$ogText->setSize(60);
$ogText->setBackground('000000', 50); // Полупрозрачный черный фон под текстом
$ogText->setPadding(20);
$ogImage->addText($ogText);

// (Необязательно) Добавляем водяной знак
// $ogWatermark = new OgWatermark();
// $ogWatermark->image('/path/to/logo.png');
// $ogWatermark->setPosition('bottom', 'right');
// $ogWatermark->setSize(100);
// $ogWatermark->setOpacity(80);
// $ogImage->addWatermark($ogWatermark);

// Рендерим и сохраняем изображение
$ogImage->render('output.png');

Всё это дело лежит на GitHub https://github.com/53ny4/og-image
Либо можно через composer:composer require 53ny4/og-image

Я буду рад любым отзывам, предложениям и улучшениям. Если у вас есть идеи или вы нашли баги, пожалуйста, создавайте issues или pull requests в репозитории. (можно и тут).

П.С. На GitHub версия 1.0.0, но это для начала, буду добавлять какие-то фичи со временем

PHP

3 Ответа

  1. Yori Yori 27 Октября

    На работе поставлю и посмотрю, полезный инструмент! Большое спасибо.

  1. yuran yuran 27 Октября (ред.)

    Я возможно не понял основной идеи… вроде как разметка OpenGraph в Libarea есть. Вот сейчас открыл на своем сайте пост, просмотр исходного кода, нашел там такое:

    <title>Ну есть же нормальные люди в США | ZxZy</title>
    <meta name="description" content="Смотрю телевизор...">
    <meta property="article:published_time" content="2024-07-30 00:06:21">
    <meta property="og:type" content="article">
    <link rel="canonical" href="https://zxzy.ru/post/70/nu-est-zhe-normalnye-lyudim-v-ssha">
    <meta property="og:title" content="Ну есть же нормальные люди в США">
    <meta property="og:description" content="Смотрю телевизор...">
    <meta property="og:url" content="https://zxzy.ru/post/70/nu-est-zhe-normalnye-lyudim-v-ssha">
    <meta property="og:image" content="https://zxzy.ru/uploads/posts/cover/2024/c-1722372946.webp">
    <meta property="og:image:width" content="820"><meta property="og:image:height" content="320">
    <meta name="twitter:card" content="summary">
    <meta name="twitter:title" content="Ну есть же нормальные люди в США">
    <meta name="twitter:url" content="https://zxzy.ru/post/70/nu-est-zhe-normalnye-lyudim-v-ssha">
    <meta property="twitter:description" content="Смотрю телевизор...">
    <meta property="twitter:image" content="https://zxzy.ru/uploads/posts/cover/2024/c-1722372946.webp"> 

    Или здесь речь именно об уникальном изображении? И каким образом это связано с OpenGraph? Если можно — объясните пожалуйста суть вопроса более развернуто.

    + Касательно, как это связано с OG только тем, что по дефолту картинка размером 1200×630. Если сильно нужно, размеры можно изменить и использовать для генерации любых других картинок.

    1. 53ny4 53ny4 27 Октября

      Прошу прощения за не точность. Скрипт динамически генерирует картинку по заданным параметрам, которую потом можно подставить в html разметку в качестве OpenGraph.