Я пытаюсь использовать localStorage для сохранения изображения или нескольких изображений для последующего поиска для загрузки на сервер.LocalStorage phonegap camera image
текущий код камеры выглядит следующим образом:
function capturePhoto() {
navigator.camera.getPicture(onCameraSuccess, onCameraFail, {quality: 70, destinationType : Camera.DestinationType.DATA_URL});
}
function onCameraSuccess(imageData) {
//In our success call we want to first process the image to save in our image box on the screen.
var image = document.getElementById('image');
image.src = "data:image/jpeg;base64," + imageData;
//Create a new canvas for our image holder
var imgCanvas = document.createElement("canvas"),
imgContext = imgCanvas.getContext("2d");
// Make sure canvas is as big as the picture
imgCanvas.width = image.width;
imgCanvas.height = image.height;
// Draw image into canvas element
imgContext.drawImage(image, 0, 0, image.width, image.height);
// Get canvas contents as a data URL
var imgAsDataURL = imgCanvas.toDataURL("image/png");
// Save image into localStorage
try {
// localStorage.setItem(“savedImage”, imgAsDataURL);
localStorage.setItem("savedImage", imageData);
alert('Image Saved');
}
catch (e) {
alert("Storage failed: " + e);
}
var imageStorage = localStorage.getItem("savedImage");
// myCardHolder= document.getElementById(“m1-cardStorage-image1″);
// Reuse existing Data URL from localStorage
var imageInfo = document.getElementById('image');
imageInfo.src = "data:image/jpeg;base64," + imageStorage;
}
Это запускает камеру, и изображение, захваченное отображается в
<img id="image" src=""></img>
Он также рисует полотно для вывода изображения в. То, что я действительно пытаюсь достичь, - это захватить данные base64 изображений, чтобы иметь возможность хранить его в массиве, чтобы он мог быть загружен/загружен с сервера.
В идеале я хотел бы, чтобы полностью избежать того, чтобы отобразить изображение для пользователя, а просто сохранения изображений данные
Возможно, я неправильно понял LocalStorage/камера API немного, поэтому любые указатели было бы здорово.
Должно ли изображение быть выведено в элемент до того, как данные могут быть сохранены? Если бы я мог просто выводить его на холст, который, возможно, никогда не нужно показывать, и извлекать данные из элемента холста?
Как правило, в локальном хранилище не должно быть только изображений, например массивы координат геолокации, будет ли индексированный DB более подходящим вариантом? Пока я могу использовать indexedDB в автономном режиме и запрашивать данные, я был бы счастлив попробовать его –
@MattMeadows, на мой взгляд, будет. Вы можете запросить большее пространство для хранения с ним, чем 5 мб, и хранить практически любые данные, включая капли. – torox