显示使用imagecreatefromstring创建的图像

eri*_*icg 9 html php gd jpeg image

假设我的代码看起来像:

<?PHP

//
//... stuff here
//

$im = imagecreatefromstring( $imageData );

echo "<img src=" . /* what goes here? */ . "alt=\"the image\" />";


//
// more stuff here
//
?>
Run Code Online (Sandbox Code Playgroud)

我该怎么替换/*这里有什么?*/所以我的图像数据会显示?

谢谢.

hak*_*kre 12

我该怎么替换/*这里有什么?*/所以我的图像数据会显示?

您突出显示的位置是HTML标记文档的所谓src属性.该值是所谓的URI Docs.img

在您的情况下,您希望该URI指向有问题的图像数据.您没有指定图像应该输出的类型,因此我将假设它是以下示例中的PNG图像.

您现在需要将图像数据转换为URI.从图像数据创建的最直接的URI是所谓的data:URI 维基百科:

<?PHP

//
//... stuff here
//

$im = imagecreatefromstring( $imageData );

ob_start();
imagepng($img);
$png = ob_get_clean();
$uri = "data:image/png;base64," . base64_encode($png);

echo "<img src=" . $uri /* URI goes here */ . " alt=\"the image\" />";

//
// more stuff here
//
?>
Run Code Online (Sandbox Code Playgroud)

即使这是最直接的方式,也不总是建议这样做,因为图像数据将随HTML一起返回到浏览器.如果图像很大,这通常被认为是开销.

data:您也可以在其中放置任何其他URI,而不是使用URI,例如指向服务器上返回图像的PHP脚本的HTTP URI.这样的脚本可以很简单:

<?php
$img = imagecreatefromstring($string);
header('Content-type: image/png');
imagepng($img);
Run Code Online (Sandbox Code Playgroud)

这与Marc B建议的相似,也可以看到他的回答.