Hallo, ich benötige mal einen Ansatz zu folgendem Problem:
Ausgangslage:
Ich baue mir hier gerade eine Art Live-Bilder-Gallerie mit JavaScript. Dazu verwende ich die neue API getUsermedia() um die Webcam einzuschalten und einen Videostream zu starten. Mit den Canvas-Methoden drawImage() und toDataURL() hole ich mir von dem Stream Einzelbilder, sende diese über einen Ajax-Request an ein PHP-Script und lade darüber die Bilder wieder auf meine Seite. Soweit funktioniert es auch.
Das Problem:
Der Grund, warum ich hier überhaupt Ajax einsetze liegt darin, dass ich die Bilder nicht nur anzeigen lassen, sondern auch in einer Datenbank speichern will. Da die Einzelbilder allerdings dynamisch über Canvas erzeugt werden, existieren sie natürlich nicht physisch auf dem Datenträger, sondern werden per $_POST als endlos lange base64-codierte URL durchgereicht. Das sieht dann so aus:
Mein erster Gedanke war nun, den 70k String mit base64_decode() zu verkürzen. Aber dabei kommt immer nur Zeichensalat raus, auch wenn ich mit
den Teil "data:image/png;base64," ausschneide.
Vielleicht bin ich mit diesem Ansatz auch auf dem Holzweg, aber trotzdem muss es doch eine Möglichkeit geben, die Bilder in eine Datenbank zu schreiben.
Ausgangslage:
Ich baue mir hier gerade eine Art Live-Bilder-Gallerie mit JavaScript. Dazu verwende ich die neue API getUsermedia() um die Webcam einzuschalten und einen Videostream zu starten. Mit den Canvas-Methoden drawImage() und toDataURL() hole ich mir von dem Stream Einzelbilder, sende diese über einen Ajax-Request an ein PHP-Script und lade darüber die Bilder wieder auf meine Seite. Soweit funktioniert es auch.
Das Problem:
Der Grund, warum ich hier überhaupt Ajax einsetze liegt darin, dass ich die Bilder nicht nur anzeigen lassen, sondern auch in einer Datenbank speichern will. Da die Einzelbilder allerdings dynamisch über Canvas erzeugt werden, existieren sie natürlich nicht physisch auf dem Datenträger, sondern werden per $_POST als endlos lange base64-codierte URL durchgereicht. Das sieht dann so aus:
PHP:
array(1) { ["foo"]=> string(72442) "data:image/png;base64,iVBORw0KGgo..."}
Mein erster Gedanke war nun, den 70k String mit base64_decode() zu verkürzen. Aber dabei kommt immer nur Zeichensalat raus, auch wenn ich mit
PHP:
explode(",", $_POST['foo']);
den Teil "data:image/png;base64," ausschneide.
Vielleicht bin ich mit diesem Ansatz auch auf dem Holzweg, aber trotzdem muss es doch eine Möglichkeit geben, die Bilder in eine Datenbank zu schreiben.