![](/img/trans.png)
[英]gif image is not created by imagecreatefromstring() and imagegif()
[英]Displaying an image created with imagecreatefromstring
假设我的代码看起来像:
<?PHP
//
//... stuff here
//
$im = imagecreatefromstring( $imageData );
echo "<img src=" . /* what goes here? */ . "alt=\"the image\" />";
//
// more stuff here
//
?>
我该怎么替换/ *这里有什么? * /所以我的图像数据会显示?
谢谢。
我该怎么替换/ *这里有什么? * /所以我的图像数据会显示?
您突出显示的位置是img
HTML-tag 文档的所谓src
属性。 该值是所谓的URI Docs 。
在您的情况下,您希望该URI指向有问题的图像数据。 您没有指定图像应该输出的类型,因此我将假设它是以下示例中的PNG图像。
您现在需要将图像数据转换为URI。 从图像数据创建的最直接的URI是所谓的data:
URI Wikipedia :
<?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);
这与Marc B建议的相似,也可以看到他的回答 。
<?php
$img = imagecreatefromstring($string);
header('Content-type: image/jpeg');
imagejpeg($img);
应该是你所需要的一切。 按原样使用图像标记,您需要将图像输出到临时文件并将图像标记指向该标记(这会引发第二个HTTP请求),或使用数据网址 。
您必须先将资源保存到文件中,或者使用imagepng()
在单独的请求中输出。
有关更多信息,请参阅imagecreatefromstring()
文档。
如果要使用数据URI方案 ,可以尝试使用:
<?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 .'" />';
我想你可以做这样的事......
$src = "data:image/gif;base64," . $imageData ;
echo "<img src=\"$src\" alt=\"the image\" />";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.