Получение изображения из REST api с помощью cURL

#php #api #rest #curl

#php #API #rest #curl

Вопрос:

Вот th $picture = curl_exec($ ch); curl_close ($ ch);

Ответ №1:

Вы не можете ввести его прямо в html таким образом, вам понадобятся два файла, один с html и один с изображением, что-то вроде этого:

 <html>
<head>
    <title>Test</title>
</head>
<body>
    <img src='getimage.php' />
</body>
</html>
  

Затем в вашем getimage.php файле:

 <?php 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'url');

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer xxx'));
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);
//Display the image in the browser
header('Content-type: image/jpeg');
echo $picture;
?>
  

Единственный способ, которым вы могли бы сделать это в том же файле, — это получить изображение, не изменяя заголовок документа, и выполнить кодирование изображения на base64 и использовать его в качестве src. Я считаю, что это было бы что-то вроде этого:

 <html>
<head>
<title>Test</title>
</head>
<body>
<?php 
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, 'url');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer xxx'));
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);
?>
<img src="data:image/jpg;base64,<?php echo base64_encode($picture); ?>" >
</body></html>
  

Комментарии:

1. Спасибо за ответ! Как вы думаете, мне придется конвертировать двоичные данные в base64 в теге image?

2. Еще раз спасибо, пытаюсь заставить первое решение работать в настоящее время, но оно по-прежнему отображается как сломанная картинка. Есть ли какие-либо хорошие инструменты отладки, о которых вы знаете, для того, что может происходить?

3. Если бы мне пришлось угадывать, если вы посмотрите на начало ваших данных изображения, �PNG IHDR���� я предполагаю, что это изображение png, а не jpg. Поэтому я бы изменил все ссылки на png вместо jpg или jpeg.

4. все еще выглядит как сломанное изображение :/ Я просто хочу подтвердить, хотя, как вы сказали в ответе, <img src=’getimage.php ‘ /> достаточно для обработки $picture?

5. Да, так и должно быть. Не уверен, в чем проблема. Вы должны иметь возможность перейти прямо к getimage.php в вашем браузере и увидите изображение само по себе.