Bis jetzt habe ich die Kamera API für meine App funktioniert, zu der die Kamera geöffnet wird, wenn eine Taste geklickt wird und sobald das Bild aufgenommen wurde, wird es auf der Seite angezeigt.Speichern des aufgenommenen Bildes in der SQlite-Datenbank? (Cordova)
Mein nächster Schritt ist, das Bild in meiner SQLite-Datenbank innerhalb einer Tabelle zu speichern. Das Erstellen der Datenbank ist kein Problem, da ich bereits ein paar andere Tabellen für andere Teile der App verwendet habe, die gut funktionieren. Ich finde nur heraus, wie man das Bild in der Datenbank speichert.
Kann hier jemand Hilfe leisten?
Kamera-Funktion:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
document.getElementById("btnCamera").onclick = function() {
navigator.camera.getPicture(function (imageUri) {
var lastPhotoContainer = document.getElementById("lastPhoto");
alert("Hot stuff!");
lastPhotoContainer.innerHTML = "<img src='" + imageUri + "' style='width: 75%;' />";
}, null, null);
};
}
HTML:
<div data-role="page" id="page7" data-theme="d">
<div data-role="header">
<a href="#page1" class="ui-btn ui-icon-home ui-btn-icon-left">Sign ut</a>
<h1>SoccerMeet</h1>
</div>
<div data-role="main" class="ui-content">
<input id="btnCamera" type="button" value="Camera photo" />
<p id="lastPhoto"></p>
</div>
<div data-role="footer">
<h2>© Gallery</h2>
</div>
</div>
AKTUALISIERT Script:
document.addEventListener("deviceready", onDeviceReady, false);
var db;
function onDeviceReady() {
db = window.openDatabase("SoccerEarth", "2.0", "SoccerEarthDB", 2 * 1024 * 1024);
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS Gallery (id INTEGER PRIMARY KEY, myImage BLOB)');
}, errorE, successS);
}
function successS() {
alert("Camera database ready!");
document.getElementById("btnCamera").onclick = function() {
navigator.camera.getPicture(onSuccess, onFail, {
quality: 50,
destinationType: Camera.DestinationType.DATA_URL
});
};
}
function onSuccess(tx, imageData) {
alert("Camera test 1");
var image = document.getElementById("lastPhoto");
image.src = "data:image/jpeg;base64," + imageData;
base64imageData = imageData;
var _Query3 = ("INSERT INTO Gallery(myImage) values ('" + base64imageData + "')");
alert(_Query3);
tx.executeSql(_Query3);
}
/* function successCamera() {
navigator.notification.alert("Image has been stored", null, "Information", "ok");
$(":mobile-pagecontainer").pagecontainer("change", "#page4");
} */
function onFail(message) {
alert('Failed because: ' + message);
}
function errorE(err) {
alert("Error processing SQL: " + err.code);
}
Sie wandeln das Bild zu base64 und speichern. – IamKarim1992
@ IamKarim1992 wäre toll, wenn Sie eine Art Vorlage zur Verfügung stellen könnten? – Mahdi
@Mahdi: Haben Sie die Lösung für Ihre Anfrage? Da ich auch Probleme in einem ähnlichen Szenario habe. – Mrunal