开发者

How to create multiple line-breaks in a dynamic image when needed?

开发者 https://www.devze.com 2022-12-18 08:38 出处:网络
Currently I\'ve got the following working just fine without any problems (yet). header (\"Content-type: image/png\");

Currently I've got the following working just fine without any problems (yet).

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 =开发者_Go百科 floor($maxwidth / $fontwidth);
        $text = wordwrap($text, $maxcharsperline, "\n", false);
    }

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

While the above works great, one thing I've been failing to work is be able to get line breaks like would come out akin to nl2br().

The text that this is pulling from in $_REQUEST['text'] is from the database, which was originally inserted from a textarea and passed to this script via URL. Naturally when people type in a textarea, there are line breaks that come from that. While printing it to the browser via text is easy, I can't seem to get the same result within an image.

I haven't spend a long time working with the GD library, but after searching around I really can't find anything about how to do this. Is it just not possible?

0

精彩评论

暂无评论...
验证码 换一张
取 消