Google Contact API图片数据,返回数据,但我不知道如何使用PHP显示它

时间:2012-02-24 22:40:52

标签: php image oauth contacts

我正在使用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'/>

我刚刚结束了更多的数据乱码。

我想我的问题是我如何显示这些数据?

2 个答案:

答案 0 :(得分:4)

根据文档,此请求返回图像的字节。所以你有三个选择:

  1. 编写一个PHP脚本,使用适当的Content-Type标头直接将这些字节(并且只有那些字节)输出到客户端,这正是@Prowla所考虑的。然后在<img src="...">

  2. 中指向此脚本
  3. 将字节写入网络服务器上可公开访问的文件,然后将该文件的网址放在<img src="...">

  4. 使用您似乎尝试过的数据URI,但忘记了您需要首先对数据进行Base64编码,例如:

    <img src="data:image/jpeg;base64,<?php echo base64_encode( $image ); ?>" />
    
  5. 虽然#3看起来最简单,但#2可能是最好的解决方案,因为图像可能不会经常变化,因此每次有人重新加载页面时都无法从API请求它。如果文件尚不存在,您可以将图像写入文件,然后定期(例如每天或每周)检查是否有新图像,如果有,则覆盖旧图像。

答案 1 :(得分:0)

在打印出图像之前,将标题内容类型设置为类似的内容(取决于数据类型):

header('Content-Type: image/jpeg');