如何直接在HTML页面中输出动态创建的图像?

时间:2016-09-19 08:24:50

标签: php http-headers gd

我有一个HTML页面。在此页面上,我想显示动态创建的PNG图像,而不先将其保存到文件中

当我只是尝试在页面中创建图像时,我当然会收到一条错误,指出已经发送的标题。

示例代码:

<!doctype html>
<html>
<head>
    <title>A Test Page</title>
</head>
<body>
    <h1>An Image</h1>
<?php

$im = imagecreatetruecolor(100, 100);
$white = ImageColorAllocate ($im, 255, 255, 255);
$black = ImageColorAllocate ($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 50, 50, $white);
imagefilledrectangle($im, 0, 50, 50, 100, $black);
imagefilledrectangle($im, 50, 0, 100, 50, $black);
imagefilledrectangle($im, 50, 50, 100, 100, $white);
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);

?>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

您可以做的是在变量中缓冲图像,然后将img编码为base64:

ob_start(); 
imagepng($im); 
$img_content = ob_get_contents(); 
ob_end_clean(); 

$dataUri = "data:image/png;base64," . base64_encode($img_content);
echo '<img src="' . $dataUri . '">';