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