PosterGen - Библиотека для генерации изображений/постеров

В последнее время стало довольно "модным" использовать автоматические генераторы постеров для записей на сайте при их выгрузке в социальные сети. Вот я и решил - почему бы и себе такой не сделать.

При написании старался сделать максимально удобную и универсальную библиотеку подходящую под разные задачи.

Базовый функционал библиотеки:

  • Установка размера изображения
  • Установка фона
  • Добавление цветного оверлея на изображении
  • Добавление обводки изображения
  • Установка позиционирования текста
  • Добавление текста
  • Настройки цвета, стиля и тени текста
  • и т.д.

Репозиторий: 

https://github.com/ange007/PosterGen

Примеры сгенерированных изображений:

PosterGen

PosterGen

PosterGen

PosterGen

PosterGen PosterGen

PosterGen

Установка:

composer require ange007/poster-gen

Использование:

<?php
    use \PosterGen;

    // Generate poster
    $poster = ( new \PosterGen\PosterGen( [ ] ) )
        ->setSize( 1280, 720 )
        ->setBackgroundImage( __DIR__ . "/backgrounds/1.jpg" )
        ->setHorizontalAlignment( 'center' )
        ->setVerticalAlignment( 'center' )
        ->setFontShadow( '#333333', -2, 2 )
        ->setOverlayColor( '#FF0000' )
        ->setBorder( 'black', 1 )
        // Title
        ->setFont( __DIR__ . "/fonts/Roboto-Regular" )
        ->setFontSize( 40 )
        ->setFontColor( '#FFFFFF' )
        ->addText( 'Microsoft buying GitHub' )
        ->addText( '' )
        // Subtitle
        ->setFont( __DIR__ . "/fonts/Blogger_Sans.otf" )
        ->setFontSize( 20 )
        ->setFontColor( '#00FFFF' )
        ->addText( 'The deal is concluded' )
        // Watermark
        ->setTextBackground( 'black', 50 )
        ->setHorizontalAlignment( 'right' )
        ->setVerticalAlignment( 'bottom' )
        ->setFontSize( 14 )
        ->setFontColor( '#FFFFFF' )
        ->setFontShadow( '' )
        ->setFontStroke( 'black' )
        ->addText( 'http://news.com' );
          
    // Poster output
    echo $poster->saveToBase64Image( );