Как создать несколько разрывов строк в динамическом изображении при необходимости? - PullRequest
2 голосов
/ 30 января 2010

В настоящее время у меня нормально работает следующее без каких-либо проблем (пока).

header ("Content-type: image/png");

$string = $_REQUEST['text'];
$font = 15;

$width = 300;
$height = 350;
$image = imagecreate($width, $height);

$back = ImageColorAllocate($image, 255, 255, 255);
$border = ImageColorAllocate($image, 0, 0, 0);

ImageFilledRectangle($image, 0, 0, $width, $height, $border);
ImageFilledRectangle($image, 1, 1, $width-2, $height-2, $back);

$text_color = imagecolorallocate($image, 255, 0, 0);

ImageStringWrap($image, $font, 3, 2, $string, $text_color, $width-2 );

imagepng($image);

function ImageStringWrap($image, $font, $x, $y, $text, $color, $maxwidth) {
    $fontwidth = ImageFontWidth($font);
    $fontheight = ImageFontHeight($font);

    if ($maxwidth != NULL) {
        $maxcharsperline = floor($maxwidth / $fontwidth);
        $text = wordwrap($text, $maxcharsperline, "\n", false);
    }

    while (list($numl, $line) = each($lines)) {
        ImageString($image, $font, $x, $y, $line, $color);
        $y += $fontheight;
    }
}

Хотя вышеперечисленное прекрасно работает, одна вещь, с которой я не справился, это возможность получить строкуbreaks like бы сродни nl2br().

Текст, из которого он извлекается из $_REQUEST['text'], взят из базы данных, которая была первоначально вставлена ​​из текстовой области и передана в этот скрипт через URL.Естественно, когда люди вводят текстовую область, из-за этого возникают разрывы строк.Хотя распечатать его в браузере с помощью текста очень просто, я не могу получить тот же результат на изображении.

Я не потратил много времени на работу с библиотекой GD, но после поиска подействительно не могу ничего найти о том, как это сделать.Разве это просто невозможно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...