2010-11-20 9 views
4

Ich habe gerade viele Artikel darüber gelesen, wie man Miniaturbild-Screenshots erstellt und nichts Verlässliches gefunden hat.Wie erstellt man Thumbnails von Webseiten mit PHP?

Gibt es eine API? Ich kann einfach die URL der Website eingeben, von der ich einen Screenshot machen möchte, und sie als Bild mit PHP zurückgeben?

+0

wie viele Thumbnails Müssen Sie generieren? ist es Ihnen wichtig, wenn Sie einen externen Service nutzen? Sind Sie bereit zu zahlen, wenn nötig? Oder muss diese Funktion auf Ihren eigenen Servern ausgeführt werden? –

Antwort

7

Check out http://www.thumbalizr.com/apitools.php

Hier ist ein Beispiel: http://api.thumbalizr.com/?url=http://www.google.com.au&width=250

Es ist sehr einfach zu bedienen und verfügt über einen kostenlosen Plan für kleine Anwendungsfälle mit anderen Plänen, die weiter fortgeschrittenen oder anspruchsvollen Bedürfnisse erfüllen sollte. Natürlich gibt es Hunderte von anderen Diensten. Aber Thumbalizer ist der beliebteste (nach Google) und ist sehr einfach zu bedienen.

+0

Wir haben thumbalizr schon einmal benutzt und es ist kein guter Service, wenn Sie nicht mit ihren Ausfallzeiten umgehen können. Am Ende haben wir sie zugunsten eines anderen Dienstes aufgegeben, den ich nach exzessiver Ausfallzeit vergessen habe. Ich denke, wir verwenden diese jetzt: http://webthumb.bluga.net/home, aber wir haben immer noch Probleme mit ihnen, also wenn jemand einen besseren Service hat, bin ich scharf darauf, sie zu sehen :) – d11wtq

+0

Ja, alle Dienste wie diese sind ziemlich ressourcenintensiv und die meisten kostenlosen Dienste werden nicht sehr zuverlässig sein. Wenn es die Ressourcen erlauben, ist es immer besser, eigene zu rollen. Aber für die meisten Anwendungsfälle ist das zu kompliziert und nicht wert. Dieser Raum könnte definitiv mit einigen robusteren und zuverlässigeren Werkzeugen verwendet werden. –

+0

Wenn Sie hinzufügen, um Ihre eigenen rollen, was würden Sie verwenden, um es zu tun? Ich weiß über PhantomJS, aber das würde erfordern etwas wie NodeJS observer -Seite (da wir eine API bauen). Wäre toll, etwas zu finden, das wir von Go aus nutzen könnten. – Eno

0

wget kann Sie bekommen, wo Sie sein wollen. Wenn Sie zu einem Terminal gelangen können, ist websnapr.com ziemlich einfach zu bedienen. Sie sollten sich für einen Schlüssel registrieren, aber sie sind ziemlich einfach zu verwenden.

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

Sie überrascht sein, wie viele Screenshot Automatisierung APIs gibt sind da draußen: Hier ist ein netter kleiner Artikel, der fünf Hauptanbieter vergleicht: Screenshot API Comparison Site.

Hauptunterschiede zwischen den APIs sind die Kosten pro Screenshot, Rendering-Geschwindigkeit und Bildqualität, und die meisten von ihnen geben den Screenshot direkt über die Anfrage-URL zurück.

Außerdem gibt es eine PHP code example auf der gleichen Website.

0

Nun, PhantomJS ist ein Browser, der einfach auf einen Server gestellt und in PHP integriert werden kann. Sie können den Code in WDudes finden. Sie haben viel mehr Funktionen enthalten wie unter Angabe der Bildgröße, Cache, Download als Datei oder Anzeigen in img src usw.

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

URL-Parameter

  • Breite und Höhe:? Screenshot.php url = google.com & w = 1000 & h = 800

  • Mit Zuschneiden:
    screenshot.php url = google.com & w = 1000 & h = 800 & clipw = 800 & cliph = 600

  • Disable Cache und laden frisch screesnhot:
    screenshot.php url = google.com & cache = 0

  • das Bild herunterzuladen, anstatt Anzeige: screenshot.php url = google.com & Download = true

Sie das Tutorial hier sehen können: Capture Screenshot of a Website using PHP without API

0

Ich wollte eine weitere Option zu dem Mix hinzufügen, einen Dienst, den ich für diesen Zweck gebaut habe, der für die Grundbenutzung frei ist - URL Sensei. Es bietet eine API, so dass Sie Anfragen stellen können, um Screenshot-URLs zu erhalten, die auf einem CDN für Sie bereitgestellt werden. Es wurde mit Phantom/SlimerJS gebaut - aber der schwierige Teil bestand darin, es schnell zu machen und es zuverlässig zu komprimieren. Lass mich wissen was du denkst!

0

Es gibt viele Open-Source-Projekte, die Website-Screenshots und Thumbnails erzeugen können, die von PHP aus aufgerufen werden können. Zum Beispiel PhantomJS, webkit2png usw.

Das große Problem mit diesen Projekten ist, dass sie auf älteren Browser-Technologie basieren und Probleme beim Rendern vieler Websites haben, vor allem Websites, die Webfonts, Flexbox, Svg und verschiedene andere Ergänzungen zu HTML5 und CSS verwenden Spezifikation in den letzten paar Monaten/Jahren.

Ich habe ein paar der Dienste von Drittanbietern ausprobiert, und die meisten basieren auf PhantomJS, was bedeutet, dass sie auch Screenshots von schlechter Qualität liefern. Der beste Third-Party-Service zur Erstellung von Webseiten-Screenshots ist urlbox.io. Es ist ein kostenpflichtiger Dienst, obwohl es eine kostenlose 7-Tage-Testversion gibt, um es zu testen, ohne einen bezahlten Plan zu begehen.

Here is a link to the documentation, und unten sind einfache Schritte, damit es in PHP mit Composer funktioniert. Wenn Sie nicht nur kopieren Sie den Code aus dem github repo mit Komponisten

// 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" /> 

Für z.B. hier ist ein urlbox URL, die eine volle Höhe Screenshot von dieser sehr Seite generieren:

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

und hier ist die resultierende Screenshot (stark komprimiert über Imgur: /)

full page screenshot of stackoverflow.com question powered by urlbox.io

Verwandte Themen