PHP Image打印出垃圾

时间:2013-01-05 23:31:28

标签: php image

尝试使用从http://php.net/manual/en/function.imagecopyresampled.php复制的代码将图像打印到浏览器。

打印出一盒随机字符。

CODE:

    public function printSummaryArticle($article, $copy, $thumb) {
    $src_image = Config::getAbsPath() . '/images/articles/' . $article['image'];
    echo
        '<div class="summary_article"><a href="/'
        . BreadCrumbs::getCrumb(1)
        . '/'
        . BreadCrumbs::getCrumb(2)
        . '/article/'
        . $article['id']
        . '"><h4>'
        . $article['title']
        . '</h4></a> ('
        . $article['date']
        . ')'
        . '<img src="data:image/jpeg;base64,'. imagejpeg($thumb->generateThumb($src_image, 300, 200)) . '"'
        . '<p>'
        . strip_tags($copy->truncateString($article['body'], 250, " "))
        . '</p><p><a href="/' . BreadCrumbs::getCrumb(1)
        . '/'
        . BreadCrumbs::getCrumb(2)
        . '/article/'
        . $article['id']
        . '"> Read more</a></p></div>';
}

也尝试过:

    public function printSummaryArticle($article, $copy, $thumb) {
    $src_image = Config::getAbsPath() . '/images/articles/' . $article['image'];
    echo
        '<div class="summary_article"><a href="/'
        . BreadCrumbs::getCrumb(1)
        . '/'
        . BreadCrumbs::getCrumb(2)
        . '/article/'
        . $article['id']
        . '"><h4>'
        . $article['title']
        . '</h4></a> ('
        . $article['date']
        . ')';
        header('Content-type: image/jpeg');
        imagejpeg($thumb->generateThumb($src_image, 300, 200));
    echo
        '<p>'
        . strip_tags($copy->truncateString($article['body'], 250, " "))
        . '</p><p><a href="/' . BreadCrumbs::getCrumb(1)
        . '/'
        . BreadCrumbs::getCrumb(2)
        . '/article/'
        . $article['id']
        . '"> Read more</a></p></div>';
}

结果相同。除了添加了错误,声称标题已经发送。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

imagejpeg()既不返回字符串也不执行Base64编码。要解决此问题,请在PHP输出缓冲区中捕获其输出,然后对捕获的输出进行Base64编码:

ob_start();
imagejpeg( $my_img );
echo '<img src="data:image/jpeg;base64,' . base64_encode(ob_get_clean()) . '">';

请注意,data:网址在Internet Explorer 8中限制为32 KB,在早期版本的IE(source)中不起作用。如果您需要支持IE 8及更低版本,您可能希望将图像另存为服务器上的单独文件。这留给读者练习:)

(有关&#34;已发送标题的解释&#34;警告,请参阅How to fix "Headers already sent" error in PHP。)

答案 1 :(得分:0)

您尚未关闭图片代码,但更重要的是您尚未对图片数据进行base64_encoded

在回复该字符串之前

ob_start();
imagejpeg($thumb->generateThumb($src_image, 300, 200));
$imagejpg=ob_get_clean();

然后这个

. '<img src="data:image/jpeg;base64,'
. base64_encode($imagejpg) 
. '" />'

你无法在第二个例子中做你想做的事情