Gibt es eine Möglichkeit, einen Screenshot einer Website in PHP zu erstellen und ihn dann in einer Datei zu speichern?
php
screenshot
Paolo Forgia
quelle
quelle
Antworten:
LETZTE BEARBEITUNG : Nach 7 Jahren bekomme ich immer noch positive Stimmen für diese Antwort, aber ich denke, diese ist jetzt viel genauer.
Sicher können Sie, aber Sie müssen die Seite mit etwas rendern. Wenn Sie wirklich nur PHP verwenden möchten , empfehle ich Ihnen HTMLTOPS , das die Seite rendert und in einer PS-Datei (Ghostscript) ausgibt. Dann kann die Konvertierung in eine JPG- , PNG- , PDF- Datei etwas langsamer sein komplexe Seiten (und unterstützen nicht alle CSS).
Andernfalls können Sie wkhtmltopdf verwenden, um eine HTML-Seite in pdf, jpg usw. auszugeben. Akzeptieren Sie CSS2.0, verwenden Sie das Webkit (Safari-Wrapper), um die Seite zu rendern. Sollte also in Ordnung sein. Sie müssen es auch auf Ihrem Server installieren.
UPDATE Mit der neuen HTML5- und JS-Funktion ist es jetzt auch möglich, die Seite mit JavaScript in ein Canvas-Objekt zu rendern. Hier eine nette Bibliothek, um das zu tun: Html2Canvas und hier ist eine Implementierung des gleichen Autors, um ein Feedback wie G + zu erhalten. Sobald Sie den Dom in den Canvas gerendert haben, können Sie ihn über Ajax an den Server senden und als JPG speichern.
BEARBEITEN : Sie können das Imagemagick-Tool verwenden, um PDF in PNG umzuwandeln. Meine Version von wkhtmltopdf unterstützt keine Bilder. ZB
convert html.pdf -append html.png
.BEARBEITEN : Dieses kleine Shell-Skript bietet ein einfaches / aber funktionierendes Anwendungsbeispiel unter Linux mit php5-cli und den oben genannten Tools.
EDIT : Ich habe jetzt bemerkt, dass das wkhtmltopdf-Team an einem anderen Projekt arbeitet: wkhtmltoimage, das Ihnen das JPG direkt gibt
quelle
Seit PHP 5.2.2 ist es möglich, eine Website ausschließlich mit PHP zu erfassen !
Bearbeiten: Beachten Sie, dass diese Funktionen NUR auf Windows-Systemen verfügbar sind!
quelle
Wenn Sie keine Tools von Drittanbietern verwenden möchten, bin ich auf eine einfache Lösung gestoßen , die die Google Page Insight- API verwendet.
Ich muss es nur API mit Params nennen
screenshot=true
.Für die mobile Site-Ansicht übergeben Sie
&strategy=mobile
params,DEMO .
quelle
Sie können einen einfachen kopflosen Browser wie PhantomJS verwenden, um die Seite abzurufen.
Sie können PhantomJS auch mit PHP verwenden.
Schauen Sie sich dieses kleine PHP-Skript an, das dies tut. Schauen Sie hier https://github.com/microweber/screen
Und hier ist die API: http://screen.microweber.com/shot.php?url=/programming/757675/website-screenshots-using-php
quelle
Das sollte gut für dich sein:
https://wkhtmltopdf.org/
Stellen Sie sicher, dass Sie die wkhtmltoimage-Distribution herunterladen!
quelle
Ja. Sie werden einige Dinge brauchen, um:
Siehe khtmld (aemon) auf * nx. Siehe Url2Jpg für Windows, aber da es sich um eine dotNet-App handelt, sollten Sie auch Url2Bmp prüfen
Beide sind Konsolentools, die Sie über Ihre Web-App verwenden können, um den Screenshot zu erhalten.
Es gibt auch Webdienste, die dies anbieten. Überprüfen Sie dies zum Beispiel.
Bearbeiten:
Dieser Link ist nützlich für.
quelle
Es ist in Python, aber wenn Sie die Dokumentation und den Code durchgehen, können Sie genau sehen, wie dies gemacht wird. Wenn Sie Python ausführen können, ist dies eine vorgefertigte Lösung für Sie:
http://browsershots.org/
Beachten Sie, dass alles auf einem Computer für eine Plattform oder auf einem Computer mit virtuellen Maschinen auf den anderen Plattformen ausgeführt werden kann.
Kostenlos, Open Source, scrollen Sie zum Ende der Seite, um Links zu Dokumentation, Quellcode und anderen Informationen zu erhalten.
quelle
Ja, so ist es. Wenn Sie nur ein Bild der URL benötigen, versuchen Sie dies
Übergeben Sie die URL als Argument und Sie erhalten das Bild für weitere Details. Überprüfen Sie diesen Link http://zenithwebtechnologies.com.au/auto-thumbnail-generation-from-url.html
quelle
Nun, PhantomJS ist ein Browser, der einfach auf einen Server gestellt und in PHP integriert werden kann. Sie finden den Code in WDudes. Sie enthalten viel mehr Funktionen wie das Festlegen der Bildgröße, des Caches, des Herunterladens als Datei oder der Anzeige in img src usw.
URL-Parameter
Breite und Höhe: screenhot.php? Url = google.com & w = 1000 & h = 800
Mit Zuschneiden: screenhot.php? Url = google.com & w = 1000 & h = 800 & clipw = 800 & cliph = 600
Deaktivieren Sie den Cache und laden Sie einen neuen Screesnhot: screenhot.php
? Url = google.com & cache = 0
So laden Sie das Bild herunter: screenhot.php? Url = google.com & download = true
Sie können das Tutorial hier sehen: Screenshot einer Website mit PHP ohne API aufnehmen
quelle
cutycapt speichert Webseiten in den meisten Bildformaten (jpg, png ..), lädt sie von Ihrer Synaptik herunter und funktioniert viel besser als wkhtmltopdf
quelle
Ich benutze immer den Microweber-Bildschirm , um Screenshots von Webseiten aufzunehmen. Hier finden wir ein gut geschriebenes Tutorial . Dies ist einfacher und sollte nicht länger als 3 Minuten dauern, um zu lernen.
quelle
Ich habe mich endlich mit Microweber / Screen eingerichtet, wie von @boksiora vorgeschlagen.
Beim Versuch des genannten Links hier habe ich zunächst Folgendes bekommen:
Ich bin unter Linux. Wenn Sie es also ausführen möchten, können Sie meinen Schritt folgen an Ihre Umgebung anpassen.
Hier ist der Schritt, den ich auf meiner Shell im
DOCUMENT_ROOT
Ordner ausgeführt habe:Zeigen Sie mit Ihrem Browser auf
screen/demo/shot.php?url=google.com
. Wenn Sie den Screenshot sehen , sind Sie fertig. Eine Diskussion für weitere Voreinstellungen finden Sie hier und hier .quelle
Es gibt viele Open Source-Projekte, die Screenshots erstellen können. Zum Beispiel PhantomJS, webkit2png usw.
Das große Problem bei diesen Projekten ist, dass sie auf älteren Browsertechnologien basieren und Probleme beim Rendern vieler Websites haben, insbesondere von Websites, die in den letzten Monaten / Jahren Webfonts, Flexbox, SVG und verschiedene andere Ergänzungen der HTML5- und CSS-Spezifikation verwenden.
Ich habe einige Dienste von Drittanbietern ausprobiert und die meisten basieren auf PhantomJS, was bedeutet, dass sie auch Screenshots von schlechter Qualität produzieren. Der beste Drittanbieter-Service zum Generieren von Website-Screenshots ist urlbox.io . Es handelt sich um einen kostenpflichtigen Service, obwohl es eine kostenlose 7-Tage-Testversion gibt, um ihn zu testen, ohne sich auf einen kostenpflichtigen Plan festzulegen.
Hier ist ein Link zur Dokumentation . Im Folgenden finden Sie einfache Schritte, um sie in PHP mit Composer zum Laufen zu bringen.
Zum Beispiel hier ein Screenshot dieser Seite in voller Höhe:
https://api.urlbox.io/v1/ca482d7e-9417-4569-90fe-80f7c5e1c781/8f1666d1f4195b1cb84ffa5f992ee18992a2b35e/png?url=http%3A%2F%2Fstackwef2 2F43652083% 2343652083 & full_page = true
quelle
Es gibt viele Möglichkeiten und alle haben ihre Vor- und Nachteile. Hier ist eine Liste der Optionen, die nach Implementierungsschwierigkeiten sortiert sind.
Option 1: Verwenden Sie eine API (die einfachste)
Vorteile
Nachteile
Option 2: Verwenden Sie eine der vielen verfügbaren Bibliotheken
Vorteile
Nachteile
Option 3: Verwenden Sie PhantomJs und möglicherweise eine Wrapper-Bibliothek
Vorteile
Nachteile
Option 4: Verwenden Sie Chrome Headless und möglicherweise eine Wrapper-Bibliothek
Vorteile
Nachteile
Haftungsausschluss: Ich bin der Gründer von ApiFlash. Ich habe mein Bestes getan, um eine ehrliche und nützliche Antwort zu geben.
quelle
Ich bin unter Windows, also konnte ich die imagegrabwindow-Funktion verwenden, nachdem ich den Tipp hier von stephan gelesen hatte. Ich habe beim Zuschneiden (um den Browser-Header, die Bildlaufleisten usw. zu entfernen) und beim Ändern der Größe hinzugefügt, um ein endgültiges Bild zu erhalten. Hier ist mein Code . Hoffe das hilft jemandem.
quelle
webkit2html funktioniert unter Mac OS X und Linux und ist recht einfach zu installieren und zu verwenden. Siehe dieses Tutorial .
Für Windows können Sie CutyCapt verwenden , das ähnliche Funktionen bietet.
quelle
Ich habe Bluga benutzt . Mit der API können Sie 100 Schnappschüsse pro Monat erstellen, ohne dafür zu bezahlen. Manchmal wird jedoch mehr als 1 Guthaben für eine einzelne Seite verwendet. Ich habe gerade ein Drupal-Modul, Bluga WebThumbs , aktualisiert auf Drupal 7 aktualisiert, mit dem Sie eine Miniaturansicht in einer Vorlage oder einem Eingabefilter drucken können.
Der Hauptvorteil bei der Verwendung dieser API besteht darin, dass Sie die Browserdimensionen angeben können, falls Sie adaptives CSS verwenden. Daher verwende ich sie, um Renderings für das mobile und Tablet-Layout sowie für das reguläre Layout zu erhalten.
Es gibt API-Clients für die folgenden Sprachen:
PHP , Python , Ruby , Java , .NET C # , Perl und Bash (das Shell-Skript scheint Perl zu erfordern)
quelle
Es hängt alles davon ab, wie Sie den Screenshot aufnehmen möchten.
Sie können dies über PHP tun, indem Sie einen Webservice verwenden, um das Bild für Sie zu erhalten
grabz.it hat einen Webservice, um genau dies zu tun. Hier ist ein Artikel, der ein einfaches Beispiel für die Verwendung des Dienstes zeigt.
http://www.phpbuilder.com/articles/news-reviews/miscellaneous/capture-screenshots-in-php-with-grabzit-120524022959.html
quelle
Sie können die https: //grabz.it-Lösung verwenden.
Es hat eine PHP-API, die sehr flexibel ist und auf verschiedene Arten aufgerufen werden kann, z. B. von einem Cronjob oder einer PHP-Webseite.
Um es zu implementieren, müssen Sie zuerst einen App-Schlüssel und ein Geheimnis erhalten und herunterladen das (kostenlose) SDK .
Und ein Beispiel für die Umsetzung. Zunächst Initialisierung:
Und Screenshot-Beispiel:
Als nächstes folgt das Speichern. Sie können eine der beiden Speichermethoden verwenden,
Save
wenn ein öffentlich zugängliches Rückrufhandle verfügbar ist undSaveTo
wenn nicht. Überprüfen Sie die Dokumentation für Details .quelle
Ich habe neulich eine schnelle und schmutzige App dafür geschrieben, indem ich die Google-API verwendet habe. Mit Sicherheit Verbesserungspotenzial ...
Finden Sie es hier mit einer Live-Demo und Code .
Ich habe den Code hier nicht veröffentlicht, nur weil ich ihn weiter verfeinere und ihn hoffentlich, wenn ich Zeit habe, in eine richtige Klasse umwandle.
quelle
Ich habe page2images verwendet . Es basiert auf dem Cutycapt, der sehr schnell und stabil ist. Wenn Sie nicht zu viel Zeit mit der Leistung und Konfiguration verbringen möchten, sollten Sie diese verwenden. Wenn Sie zu ihrer Website gehen, finden Sie weitere Details und Beispiel-PHP-Code.
quelle
Nach vielem Surfen im Web habe ich das gefunden.
PPTRAAS > Ein kostenloses Tool zum Erfassen von Screenshots, indem Sie Ihre URL als Parameter übergeben
Sie bieten mehrere Optionen, indem Sie einfach auf ihre URL klicken.
Holen Sie sich einen ganzseitigen Screenshot
https://pptraas.com/screenshot?url= {SIE URL HIER}
Holen Sie sich einen Seiten-Screenshot einer bestimmten Größe
https://pptraas.com/screenshot?url= {YOU URL HERE} & size = 400.400
Man kann die Seite sogar in pdf konvertieren
https://pptraas.com/pdf?url= {SIE URL HIER}
quelle
Sie könnten 2 Dinge tun.
Benutze Puppenspieler
Mit dem PHP Puppeteer-Paket können Sie einen Browser starten und einen Screenshot erstellen .
Verwenden Sie eine API
Es gibt viele Screenshot-APIs. Sie können sich zum Beispiel ScreenshotAPI.net ansehen . (Haftungsausschluss Ich bin der Schöpfer dieser API)
quelle
Nicht direkt. Software wie Selenium verfügt über solche Funktionen und kann von PHP gesteuert werden, weist jedoch andere Abhängigkeiten auf (z. B. das Ausführen des Java-basierten Servers auf dem Computer mit dem Browser, den Sie als Screenshot erstellen möchten).
quelle
Sie können Cutycapt verwenden.
kwhtml ist veraltet und zeigt die Seite wie ein alter Browser.
quelle
Ich habe festgestellt, dass dies das beste und einfachste Tool ist: ScreenShotMachine . Es ist ein kostenpflichtiger Service, aber Sie erhalten 100 kostenlose Screenshots und können weitere 2.000 für (ungefähr) 20 US-Dollar kaufen. Es ist also ein ziemlich gutes Geschäft. Es hat eine sehr einfache Verwendung, Sie verwenden nur eine URL, also habe ich dieses kleine Skript geschrieben, um eine darauf basierende Datei zu speichern:
Sie haben eine sehr gute Dokumentation hier , so dass Sie auf jeden Fall einen Blick nehmen.
quelle