Я пытаюсь получить изображение из сервиса Google Книги, в миниатюре. Читая адрес в php через file_get_contents, вы получите всю веб-страницу книги, а я просто хочу получить изображение обложки. Я знаю, что это можно сделать с помощью тега src элемента html img, но мне нужна сторона сервера изображений. Есть ли способ? Спасибо
Вот код, который я использовал:
$context = [
'http' => [
'method'=>"GET",
'header' => "Accept:image/png\r\nAccept-Language:it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3\r\nCache-Control:max-age=0\r\nConnection: keep-alive\r\nUser-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:33.0) Gecko/20100101 Firefox/33.0\r\n"]
];
$context = stream_context_create($context);
$result = @file_get_contents($bookThumbnail, false, $context);
Вы имеете в виду, соскабливая это? Theres, вероятно, правовые проблемы, если вы делаете это …
Но, глядя на их сайт (и только один результат), изображение находится в этой части HTML:
<div class="bookcover"><a href="http://books.google.com/books?id=btIQAAAAYAAJ&printsec=frontcover&source=gbs_ge_summary_r&cad=0" ><img src="http://bks0.books.google.com/books?id=btIQAAAAYAAJ&printsec=frontcover&img=1&zoom=1&edge=curl&imgtk=AFLRE70zzwoUCkgdipXt2aghe0i9TUKTDTH4s71IXTEPNlUNi9dN-aiJDCtxor4tL3yqq8KrHzEiHTyysqSFu2vH2QNm3JNCjyjm3f-B_N2VKYZqrcaqHfUXDdOea2f3FBR3nFIUxtk7" alt="Front Cover" title="Front Cover" width=128 border=1 id=summary-frontcover ></a></div>
Используйте что-то вроде http://php.net/manual/en/class.domxpath.php чтобы извлечь это. Должно быть довольно прямо вперед. Вы, вероятно, не захотите просто использовать file_get_contents () для изображения, используйте curl или что-то еще.
Похоже, вы хотите что-то вроде этого
$dat = file_get_contents('https://www.googleapis.com/books/v1/volumes/H1w9AwAAQBAJ');
$arr = json_decode($dat,1);
$info = $arr['volumeInfo'];
$imagedata = file_get_contents($info['imageLinks']['thumbnail']);
file_put_contents('/images/thumb.jpg', $imagedata);
// just to see it
$img = imagecreatefromstring($imagedata);
header('Content-Type: image/jpg');
imagejpeg($img);
imagedestroy($img);