У меня проблемы с получением скриншота Google API PageSpeed Insights, который они предоставляют на веб-сайте при попадании в API. Я посмотрел на другие примеры, но ни один из них не работает для меня.
Это то, что я получаю, когда нажимаю на API.
И это мой контроллер:
public function fetch() {
$key = env('GOOGLE_ANALYTICS_KEY');
$website = request('website_url');
$client = new \GuzzleHttp\Client();
$res = $client->request('GET', 'https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=http://' .$website. '&key=' . $key . '&screenshot=true');
if ($res->getStatusCode() == 200) {
$result = json_decode($res->getBody());
$data = str_replace('_','/',$result->screenshot->data);
$data = str_replace('-','+',$data);
$decoded = base64_decode($data);
return view('api.index', compact('result', 'decoded'));
} else {
return redirect()->back();
}
}
Я пытаюсь назвать это в переднем конце так:
<img src="data:image/jpeg;base64,'{{ $decoded }}">
// And like this
<img src="{{ $decoded }}">
Но просто получите пустой src = «»
Я понял.
Вот что я сделал в своем контроллере (не сильно меняя):
$result = json_decode($res->getBody());
$data = str_replace('_','/',$result->screenshot->data);
$data = str_replace('-','+',$data);
Вот как я назвал это в front-end:
<img src="data:image/jpeg;base64,{{ $data }}">
Других решений пока нет …