尝试使用从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>';
}
结果相同。除了添加了错误,声称标题已经发送。
我该如何解决这个问题?
答案 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)
. '" />'
你无法在第二个例子中做你想做的事情