[PHP-]PhantomJS - 自动检测给定高度的页面高度
[PHP-]PhantomJS - auto detecting height of page given height
我正在使用 PHP-PhantomJS 截取一组 URL。我似乎无法弄清楚如何不对截取的屏幕截图的高度进行硬编码。
我很想设置宽度并相应地自动检测每个页面的高度。由于我使用的是一组 URL,因此每个页面的高度都是动态的。
有没有人遇到过这个问题?我当前的版本如下所示:
public function takeScreenshots($site, $newDir, $dimensions) {
$urlHost = parse_url($site)["host"];
$urlPath = isset(parse_url($site)['path']) ? parse_url($site)['path'] : '';
$urlPathName = str_replace("/", "",$urlPath);
$filepath = $newDir . $urlHost . "_" . $urlPathName . ".jpg";
$client = Client::getInstance();
$client->getEngine()->setPath(base_path().'/bin/phantomjs');
$width = $dimensions["width"];
$height = $dimensions["height"];
$top = 0;
$left = 0;
$request = $client->getMessageFactory()->createCaptureRequest($site, 'GET');
$request->setOutputFile($filepath);
$request->setViewportSize($width, $height);
$request->setCaptureDimensions($width, $height, $top, $left);
$response = $client->getMessageFactory()->createResponse();
$client->send($request, $response);
}
只需要设置视口尺寸即可,如果要对整个页面进行截图,则无需设置捕获尺寸。 PhantomJS 将使用提供的宽度并制作与页面一样高的屏幕截图。
在原始 PhantomJS 脚本中,您可以通过设置页面的 viewportSize 属性 来实现:
page.viewportSize = { width: 1280, height: 1024 };
在"PHP PhantomJs"库中几乎是一样的:
$request->setViewportSize(1280, 1024);
我正在使用 PHP-PhantomJS 截取一组 URL。我似乎无法弄清楚如何不对截取的屏幕截图的高度进行硬编码。
我很想设置宽度并相应地自动检测每个页面的高度。由于我使用的是一组 URL,因此每个页面的高度都是动态的。
有没有人遇到过这个问题?我当前的版本如下所示:
public function takeScreenshots($site, $newDir, $dimensions) {
$urlHost = parse_url($site)["host"];
$urlPath = isset(parse_url($site)['path']) ? parse_url($site)['path'] : '';
$urlPathName = str_replace("/", "",$urlPath);
$filepath = $newDir . $urlHost . "_" . $urlPathName . ".jpg";
$client = Client::getInstance();
$client->getEngine()->setPath(base_path().'/bin/phantomjs');
$width = $dimensions["width"];
$height = $dimensions["height"];
$top = 0;
$left = 0;
$request = $client->getMessageFactory()->createCaptureRequest($site, 'GET');
$request->setOutputFile($filepath);
$request->setViewportSize($width, $height);
$request->setCaptureDimensions($width, $height, $top, $left);
$response = $client->getMessageFactory()->createResponse();
$client->send($request, $response);
}
只需要设置视口尺寸即可,如果要对整个页面进行截图,则无需设置捕获尺寸。 PhantomJS 将使用提供的宽度并制作与页面一样高的屏幕截图。
在原始 PhantomJS 脚本中,您可以通过设置页面的 viewportSize 属性 来实现:
page.viewportSize = { width: 1280, height: 1024 };
在"PHP PhantomJs"库中几乎是一样的:
$request->setViewportSize(1280, 1024);