PHP Base 64图像数据在图像标记中不起作用?

时间:2014-06-23 21:58:16

标签: php image rest base64

这是基于我过去的一个问题,但它是一个不同的问题,我认为提出一个新问题也会帮助许多有这个问题的人。

这就是我所拥有的

<img src="data:image/png;base64,<?php echo picture(); ?>" />    

图像显示为损坏的图像,当它作为元素检查时,它显示为正确的东西....但最后有一些奇怪的标签

{base64 data}&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Test&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;img src=" data:image="" png;base64,<html="">

有谁知道这是为什么?它太奇怪了。

谢谢!

编辑:所以页面的标题是“测试”......但是我不明白为什么它全部出现在图片标签中

1 个答案:

答案 0 :(得分:0)

正如Dagon对数据的使用所说:图像是个坏主意,因为你依赖于浏览器的实现(这是你无法控制的,而且通常会被破坏)。

我建议你使用链接到php脚本

<html>
<head>
<title>Test</title>
</head>
<body>
<img src="getpicture.php" />    
</body></html>

getpicture.php:

<?php

function getPicture()
  {
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL, 'image url');
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer XXXX'));
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
    $picture = curl_exec($ch);
    curl_close($ch);
    return $picture;
  }

header("Expires: " . date("D, j M Y H:i:s", strtotime("+1 year")));
header("Content-Type: image/png");

echo getPicture();

?>