2016-04-07 15 views
0

Şimdiye kadar kameranın bir butona tıklandığında kameranın açıldığı ve fotoğraf çekildikten sonra ekranda görüntülendiği kameranın api'si var.Yakalanan görüntü SQlite Veritabanına mı depolanıyor? (Cordova)

Bir sonraki adım, görüntüyü bir tablo içindeki sqlite veritabanına depolamaktır. Uygulamanın diğer bölümleri için kullanılan birkaç tabloya sahip olduğumdan veri tabanını oluşturmak sorun değil, sadece görüntüyü veritabanına nasıl depolayacağımı öğreniyor.

Birisi burada yardım sağlayabilir mi?

Kamera Fonksiyonu:

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>&copy; Gallery</h2> 
    </div> 
</div> 

GÜNCELLEME Senaryo:

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); 
    } 
+0

Sen base64 görüntüyü dönüştürmek ve saklayın. Bir çeşit şablon sağlayabiliyorsanız – IamKarim1992

+0

@ IamKarim1992 harika olurdu? – Mahdi

+0

@Mahdi: Sorgunuz için çözüm var mı? Aynı senaryodaki sorunlarla da karşı karşıya olduğum için. – Mrunal

cevap

1
document.addEventListener("deviceready", onDeviceReady, false); 
function onDeviceReady() { 
    document.getElementById("btnCamera").onclick = function() { 
    navigator.camera.getPicture(onSuccess, onFail, { quality: 50, 
    destinationType: Camera.DestinationType.DATA_URL 
}); 
}; 
      } 
      function onSuccess(imageData){ 
      var image = document.getElementById("lastPhoto"); 
      image.src = "data:image/jpeg;base64," + imageData; 
      //the imageData is a base64 representation of the image. 
      base64imageData=imageData;// this variable is a global variable and when ever asked for u can send it to SQL Operation class for storing. 
      } 

      function onFail(message) { 
      alert('Failed because: ' + message); 
     } 
+0

Bunun için teşekkürler, ancak hala veriyi veritabanına nasıl ekleyebileceğimin tam olarak farkında değilim. Tam olarak nasıl göründüğümü göstermek için kodumu güncelledim, yukarıda gördüğünüz gibi galeri adında yeni bir tablo oluşturan başka bir sorgu oluşturdum. "MyImage" sütununa '+ image.src +' 'eklemek için execute sql komutunu atmam mümkün olabilir mi? – Mahdi

+0

bir sorgulama yapın ve iletin .tx.executeSql (sql); Burada var sql = "INSERT INTO Galerisi (id, myImage) VALUES (" SomeID "," "+ (base64imageData) +" ') ".... db yazma işlevine erişilebilen global değişken olarak base64imageData olarak decalared nerede istersen onu arayacaksın. Uyguladığım mantık ve çok geçerli bir cevap budur. Eğer cevap olarak işaretlemeye yardımcı olursa. – IamKarim1992

+0

no im img.src, başarı fonksiyonuna yerel olarak erişemiyor ancak base64imageData global olurdu ve tx.executeSql – IamKarim1992

İlgili konular