hugsbrugs / php-screenshot

此包最新版本(dev-master)没有提供许可证信息。

PHP 截图工具

dev-master 2020-01-06 15:21 UTC

This package is auto-updated.

Last update: 2024-09-07 02:01:07 UTC


README

此库提供了工具函数,以简化使用不同提供商生成截图,以便在第一个提供商无法生成截图时始终有一个回退。

Build Status Coverage Status

注意

目前有 3 个提供商可用: Manet Apercite PagePeeker

欢迎您建议其他提供商。

安装

使用 composer 安装包

composer require hugsbrugs/php-screenshot

在您的 PHP 代码中加载库

require_once __DIR__ . '/../vendor/autoload.php';
use Hug\Screenshot\Screenshot as Screenshot;

您首先需要定义 3 个常量

define('HUG_SCREENSHOT_SAVE_PATH', '/path/to/screenshots/');
define('HUG_SCREENSHOT_PROVIDERS', '/path/to/providers.json');
define('HUG_SCREENSHOT_CACHE', 'P1W');

HUG_SCREENSHOT_SAVE_PATH 应该可由 web 服务器用户写入

HUG_SCREENSHOT_PROVIDERS 是一个如下的 json 文件

{
	"1": {
		"provider":"Manet",
		"basic_auth_user":"USERNAME",
		"basic_auth_pass":"PASSWORD",
		"scheme":"http OR https",
		"host":"HOSTNAME_OR_IP",
		"port":"PORT",
		"params":{
			"engine":"slimerjs|phantomjs",
			"format":"jpg|png|gif",
			"width":"1024",
			"delay":"3000",
			"quality":"0.9"
		}
	},
	"2":{
		"provider":"Apercite"
	},
	"3":{
		"provider":"PagePeeker",
		"code":"YOUR_CODE",
		"entrypoint":"free",
		"size":"x",
		"refresh":"",
		"wait":""
	}
}

请参阅每个提供商的文档以获取选项详细信息。

用法

$Screenshot = new Screenshot();

$url = 'https://hugo.maugey.fr';
$widths = ['1024', '768', '480'];
$screenshot = $Screenshot->shot($url, $widths);
error_log(print_r($screenshot, true));

输出示例

[status] => success
[message] => 
[images] => Array
    (
        [1024] => hugo.maugey.fr-1024xauto-1492020456.jpg
        [768] => hugo.maugey.fr-768xauto-1492020467.jpg
        [480] => hugo.maugey.fr-480xauto-1492020475.jpg
    )
[details] => Array

截图文件名按照以下约定生成

  • URL
  • 宽度 x 高度
  • 时间戳

单元测试

phpunit --bootstrap vendor/autoload.php tests

作者

Hugo Maugey 访问我的网站 ;)