Screenshot von Webseiten per PHP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
art
bild
code
dienst
forum
http
import
laufen
lesestoff
monitor
page
server
spart
system
url
verraten
weben
webseite
wertvolle rechenzeit
windows
-
Hm, nun stehe ich gerade auf dem Schlauch.
Für ein Projekt kann jeweils ein Bild hochgeladen werden, welches - danach in einem Monitor dargestellt - als PNG-Bild zurückgegeben wird.
Die Ausgabemaße sind auswählbar (50px - 1000px Breite), die Einpassung anpassbar, funzt auch alles soweit.
Nun möchte ich es erweitern, indem Screenshots von Webseiten integriert werden können.
Also auswählbar, entweder Bild hochladen, oder eben Screenshot einer Webseite.
Der Screenshot-Kram ist noch nicht in das Projekt integriert, funzt aber als extra Projekt auch schon - allerdings nur bis zu einer Breite von 300px.
Bislang nutze ich dazu die API von thumbalizr.com.
Angegeben ist, das als registrierter Free-User erstellte Bilder mit einer Breite zwischen 1-1280 px nutzbar sind.
Funzt aber nur bis zu einer Breite von 300px womit ich türlich nicht einverstanden bin.
Im Vergleich..
Monitor-Webseitenscreen 300px
Monitor-Webseitenscreen 1000px
.. sieht das ^^ echt ätzend aus, zu..
Monitor-UploadPic 300px
Monitor-UploadPic 1000px
Nutze ich den falschen Dienst, oder habe ich dabei etwas nicht beachtet?
Gibt es eventuell andere, kostenlose nutzbare Dienste, welche besser sind?
Oder gibt es gar eine PHP-Lösung, die mir entgangen ist?
Der Hintergrundgedanke ist, dass ein solches Script auch auf gehosteten Systemen ohne Rootrechte laufen soll.
Jemand ne Idee? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
PHP-Lösung auf einem "normalen" Linux-Root- oder VServer gibts nicht, weil gewisse Grundvorraussetzungen für dieses Vorhaben nicht gegeben sind (mit einem Windows-Server stehen die Chancen geringfügig besser).
Kostenlos sind diese Dienste leider alle nicht, wenn es "gut" sein soll.
Du könntest es höchstens mit Browsershots versuchen. Die haben auch eine Art API, wobei ich mich damit bisher nicht beschäftigt habe.
Beitrag zuletzt geändert: 3.2.2013 21:26:00 von fabo -
hpage schrieb:
das ist wie schon gesagt nicht möglich du kannst höchstens den HTML code auslesen
du benötigst dazu einen Server aus den eine Software die das macht installiert ist
du kannst dich andere apis ich suchen
Gibt es die Begründung auch in verständlichem Deutsch?
PHP allein reciht für solche Zwecke aber wohl wirklich nicht. Einen Eindruck davon, wie sowas realisierbar ist, gibt die Doku, die Michael Jentsch zu seinem Thumbshot-Dienst veröffentlicht hat.Auch, wenn man bei eigener Anwendung auf Dinge wie Loadbalancer & Co. verzichten könnte, immerhin interessanter Lesestoff. -
fabo schrieb:
hmmm !?
PHP-Lösung auf einem "normalen" Linux-Root- oder VServer gibts nicht, weil gewisse Grundvorraussetzungen für dieses Vorhaben nicht gegeben sind (mit einem Windows-Server stehen die Chancen geringfügig besser).
Kostenlos sind diese Dienste leider alle nicht, wenn es "gut" sein soll.
Du könntest es höchstens mit Browsershots versuchen. Die haben auch eine Art API, wobei ich mich damit bisher nicht beschäftigt habe.
einem root server kannst alles beibringen (auch ohne, dass du irgendein gui installierst ;)
und genau für root server ist die lösung so:<?php // 10.0.0.4/test/screenshot.php /** console öffnen und eingeben: import -window root screen.jpg screen.jpg kannst beliebeig wählen. das selbe mit 3sec verzögerung: sleep 3s; import -window root screen.png alle möglichketen von import unter (console) '> man import'. oder machst mit php einfach wie unten steht: */ `sleep 5s; import -window root ./screen.jpg`;
(als nur einzeiler ist schon richtig frech. nicht?)
das dazu passende bild ist hier. no dann guten morgen die damen :)
(von windows-server habe ich leider keine ahnun :(
==== EDIT: ooops! erst erwacht (06:30;) ====
das habe ich übersehen.
Der Hintergrundgedanke ist, dass ein solches Script auch auf gehosteten Systemen ohne Rootrechte laufen soll.
oder du findest ein sys mit allen drum und dran (und so etwas kann ich dir verraten ;).
Beitrag zuletzt geändert: 4.2.2013 6:34:34 von czibere -
Also erstmal, ne? Danke für eure Hilfestellung.
Hatte mir schon einiges angeschaut, darunter (kleinere Auswahl)
- Command-line -Tools von phpgangsta.de, code.google.com und verypdf.com,
- Scripte zB von sourceforge.net, Foren und Blogs ( <sehr interessant) durchwühlt,
- Google befragt, und Services beschnuppert.
Leider ist da bislang nix wirklich Brauchbares dabei, da fast immer die Script-Laufzeit überschritten, die Wartezeit unzumutbar, oder die Qualität unter aller Würde ist. Aber: Eile mit Weile, denn ich habs nun wirklich nicht eilig, und die Zeit schreitet ja voran.
fabo schrieb:
Jepp, auch Browsershots als Webservice hat was. Allerdings ist die durchschnittliche Wartezeit mit angebenen 10 bis 15 Minuten für meine Idee leider nicht brauchbar.
Du könntest es höchstens mit Browsershots versuchen. Die haben auch eine Art API
hpage schrieb:
Ja, was ich kann oder nicht kann, ist mir durchaus klar - Dir aber nicht.
das ist wie schon gesagt nicht möglich du kannst höchstens den HTML code auslesen
du benötigst dazu einen Server aus den eine Software die das macht installiert ist
du kannst dich andere apis ich suchen
Schreibe doch nächstes mal einfach mal ein kleines Beispiel-Script dazu, oder gebe wenigstens weiterführende Links zum Senf.
fatfreddy schrieb:
^^ Sehr interessant, allerdings sind seine Beispiele bzw. Online-Demos aufgrund enormer Zugriffe seit Ende 2010 leider offline.
PHP allein reciht für solche Zwecke aber wohl wirklich nicht. Einen Eindruck davon, wie sowas realisierbar ist, gibt die Doku, die Michael Jentsch zu seinem Thumbshot-Dienst veröffentlicht hat.Auch, wenn man bei eigener Anwendung auf Dinge wie Loadbalancer & Co. verzichten könnte, immerhin interessanter Lesestoff.
czibere schrieb:
Jepp, frech und genial.
für root server ist die lösung so:<?php // 10.0.0.4/test/screenshot.php /** console öffnen und eingeben: import -window root screen.jpg screen.jpg kannst beliebeig wählen. das selbe mit 3sec verzögerung: sleep 3s; import -window root screen.png alle möglichketen von import unter (console) '> man import'. oder machst mit php einfach wie unten steht: */ `sleep 5s; import -window root ./screen.jpg`;
(als nur einzeiler ist schon richtig frech. nicht?)
oder du findest ein sys mit allen drum und dran (und so etwas kann ich dir verraten ;)
Nun bin ich neugierig geworden. :)
Grundsätzlich müsste sich die html2fpdf -Geschichte doch auch dahingehend umbiegen lassen, dass anstatt von PDF-Dokumenten eher Bilder im JPG oder PNG -Format zurückgegeben werden?
-
Vielleicht hilft das ja weiter http://phpforum.de/archiv_65319_Komplette@PDFSeite@mit@Bildern@in@ein@JPG@umwandeln_anzeigen.html
Dort soll es angeblich mit Imagemagick funktionieren. -
all-in1 schrieb:
Vielleicht hilft das ja weiter http://phpforum.de/archiv_65319_Komplette@PDFSeite@mit@Bildern@in@ein@JPG@umwandeln_anzeigen.html
Dort soll es angeblich mit Imagemagick funktionieren.
Selbst wenn es funktioniert, brauchst du dazu erweiterte Rechte. -
Auf Lima wird es nichts, muss schon ein Server mit Rootrechten sein.
-
Also wenn es nur auf einem System laufen soll, auf dem du beliebige Programme installieren kannst …
Mit phantomjs und dem richtigen Programm lassen sich Webseiten als Bilddateien (png, jpg, gif) rendern.
Beispiel:
Ergibt lima-city.pngphantomjs rasterize.js https://www.lima-city.de/ lima-city.png
Root-Rechte benötigst du nicht, es reicht, wenn du ein eigenes Programm ausführen kannst… die nötigen Fonts usw müssen allerdings installiert sein.
Beitrag zuletzt geändert: 6.2.2013 16:25:58 von hackyourlife -
Holla, nun wirds interessant: Neuer Lesestoff fürs Menschle.
Werde mir alles in Ruhe anschauen, und ich weiß, es gibt einen Weg!
Wie gesagt..
Der Hintergrundgedanke ist, dass ein solches Script auch auf gehosteten Systemen ohne Rootrechte laufen soll.
..also auch hier bei Lima. Die Scriptlaufzeit schränkt das Ganze leider zusätzlich ein.
Irgendwie möchte ich durch PHP einen Service aufrufen können, der ein Bild einer Webseite in der Auflösung 1000px Breite und Qualität 100 zurückliefert. Die Höhe des Bildes kann dabei auf >600px beschnitten werden. -
Hallo,
Ich würde das clientseitig machen und dann http://phpjs.org/functions/base64_encode/ base64 encodieren. Das Spart wertvolle Rechenzeit und zweitens kann man das ev. durch einen Popup realisieren, wo die Ziel-Webseite geladen wird.
m.f.G.:Thomas131
P.S.:Lesestoff:
https://www.google.com/search?q=Screenshots+JS(JS)
https://www.google.com/search?q=Screenshots+PHP(Serverseitig, was allerdings auf lima-city nicht laufen wird)
Beitrag zuletzt geändert: 6.2.2013 20:37:57 von christcomunity -
christcomunity schrieb:
Hallo,
Ich würde das clientseitig machen .... Das Spart wertvolle Rechenzeit
Wohl kaum! Clientseitig müßte der Screenshot für jeden neuen Besucher neu generiert werden. Das verschwendet deutlich mehr Rechenzeit, auch wenn diese dann an anderer Stelle verbraten wird.
menschle schrieb:
Der Hintergrundgedanke ist, dass ein solches Script auch auf gehosteten Systemen ohne Rootrechte laufen soll.
..also auch hier bei Lima.
Wie bereits gesagt, wirst Du an diesem Kriterium vermutlich scheitern.
Es wäre aber sicher möglich, einen Dienst, wie den genannten (im Übrigen ein wahrlich interessanter Ansatz.), auf einem Server laufen zu lassen und die Ergebnisse per PHP von beliebigen Webspaces, wie z.B. Lima, abrufen zu lassen -
Hallo,
fatfreddy schrieb:
christcomunity schrieb:
Hallo,
Ich würde das clientseitig machen .... Das Spart wertvolle Rechenzeit
Wohl kaum! Clientseitig müßte der Screenshot für jeden neuen Besucher neu generiert werden. Das verschwendet deutlich mehr Rechenzeit, auch wenn diese dann an anderer Stelle verbraten wird.
Ich denke wir meinen etwas anderes. Der was den Screenshot einstellen will generiert ihn per JS und schickt in zum Server.
m.f.G.:Thomas131
Beitrag zuletzt geändert: 7.2.2013 11:32:11 von christcomunity -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage