假设我的代码类似于:
<?PHP
//
//... stuff here
//
$im = imagecreatefromstring( $imageData );
echo "<img src=" . /* what goes here? */ . "alt=\"the image\" />";
//
// more stuff here
//
?>
我该怎样替换/ *这里有什么? * /所以我的图像数据会显示?
谢谢。
答案 0 :(得分:11)
我该怎样替换/ *这里有什么? * /所以我的图像数据会显示?
您突出显示的位置是img
HTML-tagDocs的所谓src
属性。该值是所谓的URIDocs。
在您的情况下,您希望该URI指向相关图像数据。您没有指定图像应该输出的类型,因此我将假设它是以下示例中的PNG图像。
您现在需要将图像数据转换为URI。从图像数据创建的最直接的URI是所谓的data:
URIWikipedia:
<?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
//
?>
即使这是最直接的方式,也不总是建议这样做,因为图像数据将随HTML一起返回到浏览器。如果图像很大,通常认为这是开销。
您可以在其中放置任何其他URI,而不是使用data:
URI,例如指向服务器上返回图像的PHP脚本的HTTP URI。这样的脚本可以非常简单:
<?php
$img = imagecreatefromstring($string);
header('Content-type: image/png');
imagepng($img);
答案 1 :(得分:2)
<?php
$img = imagecreatefromstring($string);
header('Content-type: image/jpeg');
imagejpeg($img);
应该是您所需要的一切。按原样使用图像标记,您需要将图像输出到临时文件并将图像标记指向该标记(这会产生第二个HTTP请求),或使用data url。
答案 2 :(得分:0)
您必须先将资源保存到文件中,或者在单独的请求中使用imagepng()
之类的内容输出。
有关详细信息,请参阅imagecreatefromstring()
文档。
如果您想使用Data URI scheme,可以尝试这样做:
<?php
// If your image is binary data. use `base64_encode($imageData)`.
$imageData = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
. 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
. 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
. '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
echo '<img src="data:image/png;base64,'. $imageData .'" />';
答案 3 :(得分:0)
我认为你可以做这样的事情......
$src = "data:image/gif;base64," . $imageData ;
echo "<img src=\"$src\" alt=\"the image\" />";