Как получить аватар из инстаграм? пробую так, но выдает null
$response = file_get_contents("https://www.instagram.com/buzova86/?__a=1");
$insta = json_decode($response, true);
return $insta['graphql']['user']['profile_pic_url'];
Используя метод file_get_contents() вы получаете ВСЕГДА ответ в виде string, в случае успеха, разумеется. Картинка в виде строки представляет бинарный код BLOB, что вы и получаете. Можно воспользоваться методом imagecreatefromstring() в библиотеке GD, которая по умолчанию идет с PHP. Можете проверить есть ли она у вас, на счет этого загуглите, ибо в 99% случаев она уже имеется.
Следующий код сохранит картинку с именем download.jpg в корневую директорию:
<?php
$url = 'https://i.ytimg.com/vi/O8dx0V3F1sI/maxresdefault.jpg';
if($response = file_get_contents($url)) {
$img = imagecreatefromstring($response);
imagejpeg($img, 'download.jpg', 100);
}
imagejpeg() принимает три параметра: resourse - наш "ресурс", созданный с помощью $img = imagecreatefromstring($response);, path путь для сохранения нашей картинки, можете указать любой и quality - качество сохраняемого изображения. Далее уже зависит от вас, как вы будете распоряжаться сохраненной картинкой :)
Тут прям напрашивается curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.instagram.com/buzova86/?__a=1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = json_decode(curl_exec($ch), 1);
return $data['graphql']['user']['profile_pic_url'];
Ещё один из вариантов - с передачей заголовка:
$response = file_get_contents("https://www.instagram.com/buzova86/?__a=1");
$insta = json_decode($response, true);
header('Content-type:png');
readfile($insta['graphql']['user']['profile_pic_url']);
Если понадобится сохранение в файл - используйте буферизацию.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей