Запись текста в изображение

1.16K
.
Wap Master
Пока окончательный вариант таков
<?php

define('_IN_JOHNCMS', 1);

$headmod = 'Тест';
$textl = 'Тест';
require_once ('../incfiles/core.php');
require_once ('../incfiles/head.php');

function generateImage($text) {
    $text = wordwrap($text, 10, "\n");
    // размер изображения
    $img = imagecreatetruecolor(500, 300);
    // цвет фона
    $bg = imagecolorallocate($img, 0, 0, 0);
    imagefilledrectangle($img, 0, 0, 150, 150, $bg);
    // шрифт
    $font = 'ttf.ttf';
    // цвет текста
    $black = imagecolorallocate($img, 255, 0, 0);
    // вычисляем сколько места займёт текст
    $bbox = imageftbbox(20, 0, $font, $text);
    // вычисляем координаты для центрирования
    $x = (imagesx($img) - $bbox[4])/2;
    $y = (imagesy($img) - $bbox[5])/4;
    // добавляем текст на изображение
    imagefttext($img, 20, 0, $x, $y, $black, $font, $text);
    // выводим изображение
    $png = 'data:image/png;base64,'. base64_encode(imagepng($img));
    // освобождаем память
    imagedestroy($img);
 
    return $png;
}
 
$string = 'Проверка, тест, проверка, тест';
echo '<img src="'. generateImage($string) .'">';

require_once ('../incfiles/end.php');

?>
Прикрепленные файлы:
.
Macabre, нашёл я причину. Вот так должно работать
* (+/-)
.
Wap Master
ДоХтор, Спасибо, то что хотел!
.
# Macabre (30.10.2016 / 20:03)
ДоХтор, Спасибо, то что хотел!
Я код тестировал в IDE, и её браузер выводил картинку без проблем, а когда открыл этот же файл в Фаерфоксе, то так же как и у тебя, вылезли кракозяблы ... В общем, по не внимательности, и по не опытности, я не обратил внимание на неправильную последовательность буферизации. Исправил - и код отработал как требовалось.
.
ob_* используйте.
Захватывайте в буфер вывод картинки, из буфера в строку, строку в тело страницы
.
ob_start();
        Imagepng($img);
        $content = ob_get_contents();
        ob_clean();
        ImageDestroy($img);
        return base64_encode($content);
.
Wap Master
Еще небольшой вопросик. При экспорте ссылки на страницу, где я использую этот код, в соцсети, например вк, контакт не видит изображения, то есть обычно если на странице есть картинки, то вк выводит превью одной из них, а тут пустота.
.
потому что это не файл
.
Wap Master
И так, всем спасибо кто подсказывал. На сегодня все, в планах: добавить подсчет символов и исходя из их количества менять высоту картинки, а то если сделать высокую, а текста а то большая часть картинки пустая, а если сделать узкую то на ней не поместится длинный текст.
Всего: 69