我正在使用OAuth 1.0,我收到的联系方式很好。接下来,我使用联系信息中的链接获取图像。如果用户有图像,请求将起作用并返回一堆数据。当我回应它时,我得到这样的东西:
"" ÿÀ``"ÿÄÿÄ<!"12A#Qq‘BRa3‚’±Ñðbrƒ¡Â$%¢³ÿÄÿÄ#!1Q"AaqÿÚ?ôÌìç™pzõWoÂ~vïD±èÐvQNl/žåÐìMCÀƒÚüü¿ ÔLß÷&‹ðKš×aG¥=Ë È
我假设的是图像的数据。现在我有了这个,我无法找到一种显示它的方法。
这是我正在做的一个例子:
$consumer = new OAuth($key,$secret);
$image = $consumer->fetch($theImageUrl);
return $image;
请求正在运行,没有400,401或404错误。
我已经尝试过这样做了:
<img src="/art/transperantimage.png" style='background: #fff url(data:image/png;base64,<?=$image ?>) repeat-x bottom'/>
我刚刚结束了更多的数据乱码。
我想我的问题是我如何显示这些数据?
答案 0 :(得分:4)
根据文档,此请求返回图像的字节。所以你有三个选择:
编写一个PHP脚本,使用适当的Content-Type
标头直接将这些字节(并且只有那些字节)输出到客户端,这正是@Prowla所考虑的。然后在<img src="...">
。
将字节写入网络服务器上可公开访问的文件,然后将该文件的网址放在<img src="...">
。
使用您似乎尝试过的数据URI,但忘记了您需要首先对数据进行Base64编码,例如:
<img src="data:image/jpeg;base64,<?php echo base64_encode( $image ); ?>" />
虽然#3看起来最简单,但#2可能是最好的解决方案,因为图像可能不会经常变化,因此每次有人重新加载页面时都无法从API请求它。如果文件尚不存在,您可以将图像写入文件,然后定期(例如每天或每周)检查是否有新图像,如果有,则覆盖旧图像。
答案 1 :(得分:0)
在打印出图像之前,将标题内容类型设置为类似的内容(取决于数据类型):
header('Content-Type: image/jpeg');