繁体   English   中英

显示使用imagecreatefromstring创建的图像

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM