Google Contact API Picture Data возвращает данные, но я не знаю, как отобразить их с помощью PHP - PullRequest
1 голос
/ 25 февраля 2012

Я использую 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;

Запрос работает, нет 400401,или 404 ошибки.

Я уже пытался сделать это:

<img src="/art/transperantimage.png" style='background: #fff url(data:image/png;base64,<?=$image ?>) repeat-x bottom'/>

, и я только что получил больше данных.

Я думаю, мой вопрос, как, черт возьми,Я отображаю эти данные?

Ответы [ 2 ]

4 голосов
/ 25 февраля 2012

Согласно документации, этот запрос возвращает байты изображения. Итак, у вас есть три варианта:

  1. Напишите сценарий PHP, который выводит эти байты (и только эти байты) непосредственно клиенту, используя соответствующий заголовок Content-Type, что и имеет в виду @Prowla. Затем укажите на этот скрипт в вашем <img src="...">.

  2. Запишите байты в общедоступный файл на вашем веб-сервере, а затем поместите URL-адрес этого файла в <img src="...">.

  3. Используйте URI данных, который вы, похоже, пытались, но забыли, что вам нужно сначала кодировать данные Base64, например:

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

Хотя # 3 выглядит самым простым, # 2, вероятно, является лучшим решением, так как изображение, вероятно, меняется не очень часто, поэтому нет смысла запрашивать его у API каждый раз, когда кто-то перезагружает вашу страницу. Вы можете просто записать изображение в файл, если файл еще не существует, а затем периодически (например, каждый день или неделю) проверять, есть ли новое изображение, и, если оно есть, перезаписать старое.

0 голосов
/ 25 февраля 2012

Перед печатью изображения установите тип содержимого заголовка примерно таким (в зависимости от типа данных):

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