2012-02-24 19 views
1

我使用OAuth 1.0,我得到的聯繫人就好了。接下來,我使用聯繫信息中的鏈接獲取圖像。如果用戶有一張圖片,請求就起作用並返回一堆數據。當我回應它,​​我得到這樣的東西:谷歌聯繫API圖片數據,返回數據,但我不知道如何顯示它與PHP

 "" ÿÀ``"ÿÄÿÄ<!"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'/> 

,我剛剛結束了更多的數據jibberish。

我想我的問題是我怎麼顯示這些數據?

回答

4

每文檔,該請求返回的圖像的字節。所以,你有三種選擇:

  1. 寫一個PHP腳本,這些字節(只有那些字節)直接輸出到使用適當的Content-Type頭,這是@Prowla心中都有客戶。然後在<img src="...">中指向該腳本。

  2. 將字節寫入Web服務器上的公用訪問文件,然後將該文件的URL放入您的<img src="...">

  3. 使用數據URI,你似乎已經嘗試,但忘了,你需要爲Base64第一編碼數據,例如:

    <img src="data:image/jpeg;base64,<?php echo base64_encode($image); ?>" /> 
    

雖然#3是看起來最簡單的, #2可能是最好的解決方案,因爲圖像可能不會經常更改,所以每當有人重新加載頁面時,都沒有必要從API請求它。如果文件尚不存在,則可以將圖像寫入文件,然後定期(例如每天或每週)檢查是否有新圖像,如果有,則覆蓋舊圖像。

+0

與#3一起,我們已經討論過將圖像保存到數據庫中並決定採用這種方法。感謝關於base64_encode的提示,不知道爲什麼我得到了亂碼。 – busbina 2012-02-24 23:09:50

0

之前打印出的圖像設置的報頭的內容類型的東西(取決於數據類型),如:

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

這適用於一個,但我需要做所有的用戶的聯繫人。我認爲在時間戳到期後,聯繫請求中的URL會發生變化,因爲當我將地址保存到src ='/ getimages?fetch = <?= $ contactURL?>' – busbina 2012-02-24 23:03:57

+0

時,我得到了404'該線只設置內容標題。您需要像過去一樣適當構建動態請求URL,然後發出請求並打印設置了內容類型的數據(您提供的回顯示例)。同時將這些圖像保存在您的身邊並附帶失效日期(如Jordan提議的) – Kurt 2012-02-24 23:18:27

相關問題