После анализа кода и проверить функции, которые вы используете, я смотрел на этой части: $xpath->query('//img[id="croppedImage"]');
и по сравнению с http://php.net/manual/en/domxpath.query.php вы можете видеть, что функция возвращает DOMNodeList
элемента (даже если ничего не будет найдено, он будет возвращать . приемлю без детей .. вы потом принимать этот объект, и передавая ее imagecreatefromjpeg($filename)
, который принимает строку как $ имя файла, а не объект Кроме того, ваш селектор XPath неправильно, вы должны префикс id
с @
так: $xpath->query('//img[@id="croppedImage"]');
Итак, вот какой код, который захватит элемент <img />
o ff на странице по номеру id
, а затем загрузите URL-адрес атрибута src
и сохраните его. Вы хотите убедиться, что src изображения, которое вы загружаете, является файлом jpg
, иначе imagecreatefromjpeg()
не удастся. Вы можете использовать CURL или другой метод для загрузки изображений (так что вы также можете получить png-изображения), но это выходит за рамки этого ответа.
$dom = new DOMDocument();
$dom->loadHTML('
<html>
<img src="http://images.freepicturesweb.com/img1/18/02/13.jpg" id="croppedImage2"/>
<img src="http://images.freepicturesweb.com/img1/18/02/14.jpg" id="croppedImage3"/>
</html>
');
$xpath = new DOMXPath($dom);
$imageElements = $xpath->query('//img[@id="croppedImage2"]');
// make sure $imageElements isn't empty
if($imageElements->length) {
// grab first item in list (should only be one)
/** @var DOMElement $imageElement */
$imageElement = $imageElements->item(0);
// get the src attribute off the <img>
$src = $imageElement->getAttribute('src');
// download and create image resource based off $src
$img = imagecreatefromjpeg($src);
// save image with random name to current directory
$filename = __DIR__.'/'.base_convert(sha1(uniqid(mt_rand(), true)), 16, 36).'.jpg';
imagejpeg($img, $filename);
echo "File saved to: ".$filename;
}
Следует также отметить, что вы назначали переменную переменной. Делать это можно очень быстро. Если вы хотите, чтобы переменная называлась чем-то другим, просто устанавливайте имя, когда вы инициализируете его, а не назначаете его другой переменной с именем, которое вы хотите (я предполагаю, что это просто то, что вы оставили после того, как попробовали какой-то код, но все же Стоит отметить).
Что означает «это не работает»? Поразмыслить? –
@Charlotte Конечно, когда я проверяю каталог «images_saved», он по-прежнему пуст. Я ожидаю увидеть сохраненное изображение. – Yusuph