• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Webcam Bild bei Klick speichern

Sadame

Neues Mitglied
Huhu,

Ich habe eine Webcam, die ein Livebild erzeugt.
Mit folgendem Code kann ich das Bild bei Seitenaufruf speichern, was auch gut funktioniert.

PHP:
<?php
$contents= file_get_contents('http://linkzumeinercam.jpg');
setlocale(LC_TIME, 'de_DE');
$savename = strftime("%Y-%m-%d_%H-%M-%S");
$savefile = fopen("$savename.jpg", "w");
fwrite($savefile, $contents);
fclose($savefile);
?>

Nun möchte ich aber gerne, dass dies per Klick auf einen Button erfolgt. Habe aber schon auf mehreren Seiten gelesen, dass man php nicht mit onclick verbinden könnte.
Gibt es trotzdem eine Möglichkeit das zu realisieren? Ich stehe gerade echt auf dem Schlauch @@

Danke für eure Hilfe schonmal im Vorraus.

LG
Sadame
 
Werbung:
onclick ist ein JavaScript EventHandler. JavaScript läuft clientseitig, PHP serverseitig. Passt also nicht wirklich zusammen.

Dennoch könntest Du bei onclick auch einen AJAX-Request an deine PHP-Programmierung abschicken. Dadurch könntest Du per onclick ein Bild speichern.
 
Huhu,

Okay, danke für deine Antwort. Da muss ich mich erstmal etwas schlau machen, da ich mich mit Ajax noch nicht auskenne.
Aber gut zu wissen, dass es eine Möglichkeit gibt :)

LG
Sadame
 
Werbung:
Kleiner Tipp:

Informier dich , nachdem du dich über AJAX informiert hast, über jQuery und deren Methoden zu AJAX. Wenn du die zwei Sachen verstanden hast, machst du AJAX-Request in nur paar Zeilen und erreichst dein Ziel auf relativ einfacher weise :)

P.S.

Was für eine WebCam benutzt du und wie hast du die so eingestellt, dass du Sie per URL Aufrufen kannst? ( Hatte noch nie Zeit und Lust mich damit zu beschäftigen^^ )
 
Huhu,

Okay, mach ich :)
Meine Webcam ist eine WLan IPCam. Der Upload läuft über dyndns und ich rufe per Javascript mittels Reload das Livebild der Cam auf. Eine, die ein Livebild zur Verfügung stellen würde, hätte mehr gekostet... Ist vielleicht nicht die eleganteste Lösung, aber es funktioniert.

LG
Sadame
 
Huhu,

ich krieg es einfach nicht hin. Hab mich durch diverse Tutorials zu jQuery gelesen und auch viele Sachen ausprobiert, aber wenn ich die php-Dateien dann durch meine ersetze, wird einfach kein Bild gespeichert. Irgendwelche Texte in einen Container zu laden, krieg ich hin, aber ein Bild zu speichern klappt nicht.
Kann mir jemand ein wenig Hilfestellung geben?

Bin langsam ein wenig verzweifelt @@

LG
Sadame
 
Werbung:
Hallo,

du erstellst dir eine Seite mit allem drum und dran auf der Seite ist der Button "Livebild speichern" und ein leeres Div mit einer ID. Nun fügst du einen onclick bei dem button Livebild speichern hinzu, welches dein PHP Livebildspeichernscript aufruft. Du lädst das in deinen Container. Am besten schreibst du vor dein PHP Script in der Livebildspeicherndatei "Livebild wird gespeichert..." und nach dem PHP Script "Livebild wurde gespeichert", damit du auch eine Ausgabe siehst. Probier das nochmal. Wenn kein Text kommt, untersuche doch mal deine Fehlerkonsole des Browsers.
 
Huhu,

Ich danke dir! Jetzt krieg ich wenigstens schonmal eine Fehlermeldung.

Code:
Livebild wird gespeichert
[B]Warning[/B]:  fopen(RatcamBilder/2012-03-25_09-10-06.jpg) [[URL="http://www.kanal-ratten.de/RatcamBilder/function.fopen"]function.fopen[/URL]]: failed to open stream: No such file or directory in [B]/xx/RatcamBilder/ajax.php[/B] on line [B]7[/B]

[B]Warning[/B]:  fwrite(): supplied argument is not a valid stream resource in [B]/xx/RatcamBilder/ajax.php[/B] on line [B]8[/B]

[B]Warning[/B]:  fclose(): supplied argument is not a valid stream resource in [B]/xx/RatcamBilder/ajax.php[/B] on line [B]9[/B]
Livebild wurde gespeichert

line 7, 8 und 9 sind diese hier:

PHP:
$savefile = fopen("$savename.jpg", "w");
fwrite($savefile, $contents);
fclose($savefile);

Was läuft da denn falsch?

Mein Ajax (bzw. JQuery) Code ist folgender:
HTML:
        <script type="text/javascript">
            $(document).ready(function(){
                $("#button").click(function(){
                $("#Livebild").load(
                "ajax.php",
            {
                ajaxpost: "post()-Daten (POST)"
            }
            );
            });
            });
        </script>

Und der button und div:

HTML:
    <button id="button">Livebild speichern</button>
        <div id="Livebild"></div>

Oder geht es nicht über Post? Über Get?

LG
Sadame
 
Zuletzt bearbeitet:
Huhu,

Ich Depp hab nur den Dateipfad nicht richtig angegeben @@
PHP:
$savename = strftime("../RatcamBilder/%Y-%m-%d_%H-%M-%S");

Jetzt gehts :) Vielen Dank!

LG
Kathleen
 
Werbung:
Huhu,

Ich habe ein neues Problem bei meinem Vorhaben.
Meine Cam ist nur von 8 bis 21 Uhr online. Ich möchte nun also, dass während dieser Zeit (und auch, wenn sie sonst mal ausfällt) ein Text da steht ("Die Cam ist gerade nicht online. Bitte versuche es später noch einmal) und auch der Button "Livebild speichern" nicht zu sehen ist.

Ich habe es folgendermaßen versucht

PHP:
$imgexist = "http://www.url/zu/meinem.Livebild.jpg";    

if (file_exists($imgexist)) {
        echo "<button id='button'>Livebild speichern</button>
        <div id='Livebild'></div>";
        }
        else {
        echo "Die Cam ist gerade nicht online. Bitte versuche es später noch einmal";
        }

Das if file_exists scheint dabei irgendwie ignoriert zu werden, so dass nur der Text "Die Cam ist nicht online..." da steht und der Button nicht angezeigt wird, obwohl die Cam online ist...

Was mache ich falsch, bzw. wie könnte ich das anders realisieren?

LG
Sadame
 
ungetestet
PHP:
$zeit = date(G);
if ($zeit > 08){
//zeige Bild
}elseif($zeit < 21){
echo "Die Kamera ist nur von 8 Uhr morgens bis 21 Uhr online";
}
 
Huhu,

Danke, das wäre sicher fürs erste eine Lösung, aber ich möchte gerne, dass geprüft wird, ob ein Bild da ist und wenn keins da ist, dass es dann diesen Text anzeigt und den Button verbirgt. Die Cam fällt auch gerne mal einfach so aus und auch da soll dann das alles ablaufen. Es muss doch sicher eine Möglichkeit geben zu überprüfen, ob am Ende einer img-url ein Bild da ist oder nicht...

LG
Sadame
 
Werbung:
Huhu,

Das ist glaube ich genau das, was ich gesucht hab. Leider funktioniert es nicht und gibt mir einen fatal error aus

PHP:
Fatal error: PHP warning in file Testordner/test.php (63): filectime()  [<a href='function.filectime'>function.filectime</a>]: stat  failed for
Line 63 ist diese hier:

PHP:
if(filectime($url) < time()-$seconds)

Hab es genauso aufgebaut, wie in der Anleitung und auch 100mal überprüft, dass keine Fehler drin sind. Ich hab jetzt nen absoluten Pfad zu meinem Bild (weil das nicht auf diesen Server geladen wird). Liegts daran? Darf der nur relativ sein?

LG
Sadame

edit: ich habe es jetzt nocheinmal mit file_exists probiert. Und obwohl die Cam an ist, gibt es mir ein false aus, also dass die Datei nicht exisiteren würde? @@
 
Zuletzt bearbeitet:
Zurück
Oben