Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP拍摄网站的缩略图截图?_Php_Api_Screenshot_Thumbnails - Fatal编程技术网

如何使用PHP拍摄网站的缩略图截图?

如何使用PHP拍摄网站的缩略图截图?,php,api,screenshot,thumbnails,Php,Api,Screenshot,Thumbnails,我刚刚读了很多关于如何创建缩略图的文章,但没有找到任何可靠的 是否有一个api,我可以简单地输入我想要截图的网站的url,并使用PHP将其作为图像返回?请查看 下面是一个例子: 它非常容易使用,并且有一个针对小用例的免费计划,其他计划应该满足更高级或更苛刻的需求。当然,还有数百种其他服务。但是Thumbalizer是最流行的(根据谷歌的说法),而且非常容易使用。wget可以让你达到你想要的目的。如果你能到达一个终端,这是非常容易使用的。您可能想注册一个密钥,但它们的使用非常简单 wget -O

我刚刚读了很多关于如何创建缩略图的文章,但没有找到任何可靠的

是否有一个api,我可以简单地输入我想要截图的网站的url,并使用PHP将其作为图像返回?

请查看

下面是一个例子:


它非常容易使用,并且有一个针对小用例的免费计划,其他计划应该满足更高级或更苛刻的需求。当然,还有数百种其他服务。但是Thumbalizer是最流行的(根据谷歌的说法),而且非常容易使用。

wget可以让你达到你想要的目的。如果你能到达一个终端,这是非常容易使用的。您可能想注册一个密钥,但它们的使用非常简单

wget -O MYFILENAME.png http://images.websnapr.com/?url=MYURL&size=s&nocache=82&key=MYKEY

你可以使用服务。它有一个简单的基于HTTP GET的API。以下是文档页面:

您可以使用以下内容制作屏幕截图API:

或:


你会惊讶于有这么多屏幕截图自动化API:下面是一篇比较五大提供商的文章:

API之间的主要区别在于每个屏幕截图的成本、渲染速度和图像质量,大多数API直接通过请求URL返回屏幕截图


另外,在同一个站点上有一个

嗯,PhantomJS是一种浏览器,可以很容易地放在服务器上并将其集成到php中。您可以在WDudes中找到代码。它们包含了更多的特性,比如指定图像大小、缓存、作为文件下载或在imgsrc中显示等

<img src=”screenshot.php?url=google.com” />

URL参数

  • 宽度和高度:screenshot.php?url=google.com&w=1000&h=800

  • 带裁剪:
    screenshot.php?url=google.com&w=1000&h=800&clipw=800&cliph=600

  • 禁用缓存并加载新的screenshot:
    screenshot.php?url=google.com&cache=0

  • 要下载图像而不是显示图像,请执行以下操作: screenshot.php?url=google.com&download=true


您可以在这里看到教程:

我想在混合中添加另一个选项,这是我为此目的构建的一项服务,基本使用是免费的。它提供了一个API,因此您可以请求获取托管在CDN上的屏幕截图URL。它是使用Phantom/SlimerJS构建的-但最难的部分是使其快速且可靠地压缩。让我知道你的想法

有很多开源项目可以生成可以从PHP调用的网站截图和缩略图。例如PhantomJS、webkit2png等

这些项目的最大问题是,它们基于较旧的浏览器技术,并且在呈现许多站点时存在问题,特别是在过去几个月/年中使用webfonts、flexbox、svg和HTML5和CSS规范的各种其他附加内容的站点

我尝试过一些第三方服务,大多数都是基于PhantomJS的,这意味着它们也会产生低质量的屏幕截图。生成网站截图的最佳第三方服务是。这是一项付费服务,尽管有一个免费的7天试用期来测试它,而无需承诺任何付费计划

,下面是使用composer在PHP中工作的简单步骤。如果您没有使用composer,只需从

//1。获取urlbox/screenshots composer包(在命令行上):
编写器需要URL框/屏幕截图
// 2. 使用Urlbox API凭据设置composer包:
$urlbox=UrlboxRenderer::fromCredentials('API_KEY','API_SECRET');
// 3. 设置您的选项(可以在此处设置所有选项,如全页/全高屏幕截图、视网膜分辨率、视口尺寸、缩略图宽度等。有关更多信息,请参阅文档。)
$options['url']='http://stackoverflow.com/questions/4235638/how-to-take-thumbnail-screenshots-of-websites-using-php'; // 设置此网页的url!
$options['thumb_width']=400;//将缩略图设置为400px宽
$options['full_page']=true;//将全页模式设置为on,将指示urlbox拍摄全高屏幕截图
// 4. 生成url框url
$urlboxUrl=$urlbox->generateUrl($options);
//$urlboxUrl现在是'https://api.urlbox.io/v1/ca482d7e-9417-4569-90fe-80f7c5e1c781/0ad1be1ff7ac16bc295d8b0207c98e776003e53e/png?url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F4235638%2Fhow-使用php&full_page=true&thumb_width=400'截取网站的缩略图
// 5. 现在将其粘贴在img标签中,当图像加载到浏览器中时,将触发对urlbox的API调用,并生成一个漂亮的PNG屏幕截图!
例如,这里有一个url框url,它将生成此页面的全高屏幕截图:

这是最终的屏幕截图(通过imgur:/进行了大量压缩)


您需要生成多少个缩略图?您是否介意使用外部服务?如果是nec,你愿意支付吗?或者您是否需要在自己的服务器上运行此功能?它非常可靠,并且有一个PHP示例。我们以前使用过Thumbalizer,如果您不能处理他们的停机问题,那么它不是一个好的服务。由于停机时间过长,我们最终放弃了它们,转而使用我忘记的其他服务。我想我们现在使用这些:,但我们仍然有问题,所以如果有人有更好的服务,我很想看到:)是的,所有像这样的服务都非常需要资源,大多数免费服务都不太可靠。如果资源允许,你最好自己动手。但是对于大多数用例来说,这太复杂了,不值得这么做。这个空间肯定可以与一些更强大、更可靠的工具一起使用。如果你自己添加了roll,你会用什么来做呢?我知道PhantomJS,但这需要在服务器端运行类似NodeJS的东西(因为我们正在构建API)。如果能从围棋中找到我们可以使用的东西,那就太好了。
// 1 . Get the urlbox/screenshots composer package (on command line):
composer require urlbox/screenshots

// 2. Set up the composer package with Urlbox API credentials:
$urlbox = UrlboxRenderer::fromCredentials('API_KEY', 'API_SECRET');

// 3. Set your options (all options such as full page/full height screenshots, retina resolution, viewport dimensions, thumbnail width etc can be set here. See the docs for more.)
$options['url'] = 'http://stackoverflow.com/questions/4235638/how-to-take-thumbnail-screenshots-of-websites-using-php'; // set url to this very page!
$options['thumb_width'] = 400; // set thumbnail to be 400px wide
$options['full_page'] = true; // set full_page mode on, will instruct urlbox to take a full height screenshot

// 4. Generate the Urlbox url
$urlboxUrl = $urlbox->generateUrl($options);
// $urlboxUrl is now 'https://api.urlbox.io/v1/ca482d7e-9417-4569-90fe-80f7c5e1c781/0ad1be1ff7ac16bc295d8b0207c98e776003e53e/png?url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F4235638%2Fhow-to-take-thumbnail-screenshots-of-websites-using-php&full_page=true&thumb_width=400'

// 5. Now stick it in an img tag, when the image is loaded in browser, the API call to urlbox will be triggered and a nice PNG screenshot will be generated!
<img src="$urlboxUrl" />