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

1.16K
.
Wap Master
# ДоХтор (30.10.2016 / 16:25)
Есть специальная функция, wordwrap()
спасибо, то что надо!
.
Wap Master
Ребят, не подскажете как встроить получившееся изображение в пхп страничку если это возможно?
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
Все современные браузеры поддерживают формат data:image
Потому, удобнее всего генерацию изображения упихнуть в функцию, которая возвращает строку.
А уже эту строку вставляешь в тэг IMG в атрибут SRC
echo '<img src="' . generateImage() . '">';

Для примера реализации глянь код капчи, что я писал для mobiCMS, там применен именно такой подход.
Не генерируется никаких временных файлов, все налету: https://github.com/Gazenwagen/ ... p#L98
.
Wap Master
Попытался сделать через функцию, но что то пошло не так, пока в разработке.
<?php

define('_IN_JOHNCMS', 1);

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

function generateImage($string)
    {

$text = "Проверка, тест, проверка, тест";
$text = wordwrap($text, 10, "\n");  ///перенос строки через 10 символов
// размер изображения
$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);
 
// выводим изображение
imagepng($img);
// освобождаем память
imagedestroy($img);
        return 'data:image/png;base64,' . base64_encode(ob_get_clean());
    }
echo '<img src="' . generateImage() . '">';

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

?>
.
# Macabre (30.10.2016 / 18:30)
Попытался сделать через функцию, но что то пошло не так, пока в разработке.
<?php

define('_IN_JOHNCMS', 1);

$headmod = 'Тест';
$textl = 'Тест';
require_once ('../incfiles/core.php');
require
Ты не передал аргумент в функцию. Попробуй так
$string = 'Мой копирайт';
echo '<img src="' . generateImage($string) . '">';
.
Тут function generateImage($string) $string замени на $text , а в 13 строке вот это

$text = "Проверка, тест, проверка, тест";

удали.
.
Wap Master
ДоХтор, уже ближе, отображается страничка, но вместо картинки выводится ее текст что то типа того
�PNG IHDR�,��֟lIDATx���_�]U~��/����Z;� mIE�23̃"�X�a)CD�����)����"C��AJ+>XI����X+% !��A�$HN&d�}8���s㟫7��|>����]{��ν��:���-8g�^;�ɺ�l����^�Z�������x���=�am��]�E������%���Id_���W�R;&�m ���Z�#�=U�6����A-�Ѻ`��_W���?Y���<��ؽby���|�ľ��������y�ǭ�N��'a��Qx���WG���Z�w�u�����\=^;&9N��F�~�.�OW��/-/��&�_R;�h��F��zf��Ǐ���u�6�����^��֫�����y�E���ps�?o����}�p�(<2NYN��rf�p~��mo���y��r�xQy
.
ДоХтор
# Macabre (30.10.2016 / 19:11)
ДоХтор, уже ближе, отображается страничка, но вместо картинки выводится ее текст что то типа того
А файл со шрифтом у тебя на месте? В этой переменной путь к нему верно указан?

$font = 'ttf.ttf';

Я на локалке проверил только что (разумеется, путь к файлу со шрифтом подправил) , работает -- на чёрном фоне красная надпись. Скрин показать?
Вот таким образом (+/-)
.
интересная тема покеа в ней посижу..позырю самомк надо
.
Macabre
Wap Master
ДоХтор, вот мой код, может опять напутал что
* (+/-)
Всего: 69