正如 Nile 已经指出的那样,您希望对图像使用 Data-URI。
使用您的代码的工作代码示例如下:
echo "how";
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
$tmpImg = tempnam('/tmp', 'image');
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
imagejpeg($im, $tmpImg);
imagedestroy($im);
echo '<img src="data:image/jpeg;base64,' . base64_encode(file_get_contents($tmpImg)) . '">';
unlink($tmpImg);
发生什么了?它或多或少是您使用的代码,但图像被写入临时文件而不是直接发送到浏览器 - 这是 imagejpeg 的第二个参数。然后使用 Base64-Encoding 将临时文件的内容放入 Data-URI 中,然后将 DataUri 设置为图像标签的 src。
最后您将要删除临时文件!
如果要省略临时文件,可以使用输出缓冲来捕获图像。这将类似于以下内容:
echo 'how';
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
ob_start();
imagejpeg($im);
imagedestroy($im);
$image = ob_get_contents();
ob_end_clean();
echo '<img src="data:image/jpeg;base64,' . base64_encode($image) . '">';