php实现网页截图
使用 PHP 的 wkhtmltopdf 工具
wkhtmltopdf 是一个命令行工具,可以将 HTML 转换为 PDF 或图片。通过 PHP 的 exec 或 shell_exec 函数调用该工具,可以实现网页截图功能。
安装 wkhtmltopdf 后,使用以下代码生成截图:
$url = 'https://example.com';
$outputImage = 'screenshot.png';
$command = "wkhtmltoimage --quality 100 {$url} {$outputImage}";
exec($command);
使用 Browsershot 库
Browsershot 是一个基于 Puppeteer 的 PHP 库,可以生成网页截图。安装依赖后,调用以下代码:
use Spatie\Browsershot\Browsershot;
Browsershot::url('https://example.com')
->setOption('quality', 100)
->save('screenshot.png');
调用第三方 API
一些第三方服务(如 APIFlash、Urlbox)提供网页截图 API。通过发送 HTTP 请求即可获取截图。以下是使用 APIFlash 的示例:
$apiKey = 'YOUR_API_KEY';
$url = 'https://example.com';
$apiUrl = "https://api.apiflash.com/v1/urltoimage?access_key={$apiKey}&url={$url}";
$imageData = file_get_contents($apiUrl);
file_put_contents('screenshot.png', $imageData);
使用 headless Chrome 和 PHP 脚本
通过启动无头 Chrome 实例并截取页面,可以实现更灵活的截图。以下代码使用 chrome-php/chrome 库:
use HeadlessChromium\BrowserFactory;
$browserFactory = new BrowserFactory();
$browser = $browserFactory->createBrowser();
$page = $browser->createPage();
$page->navigate('https://example.com')->waitForNavigation();
$page->screenshot()->saveToFile('screenshot.png');
$browser->close();
注意事项
- 确保服务器环境支持命令行工具或第三方服务调用。
- 部分方法需要安装额外依赖(如 Node.js、Puppeteer 或 Chrome)。
- 第三方 API 可能有调用限制或收费计划。
- 截图质量受网页加载速度和渲染引擎影响,建议设置合理的超时时间。







