2

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

它打印出一盒随机字符。

代码:

    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>';
}

结果相同。除非添加了错误声明标头已发送。

我怎样才能解决这个问题?

4

2 回答 2

3

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

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

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

(有关“标头已发送”警告的说明,请参阅如何修复 PHP 中的“标头已发送”错误。)

于 2013-01-06T01:29:11.487 回答
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) 
. '" />'

你不能做你在第二个例子中想做的事情

于 2013-01-06T01:03:54.403 回答