Какъв е начинът да запазите платно в албума на телефона си (ролка от фотоапарат и т.н.) с помощта на Phonegap?
И когато се запише, как да получа URL адреса на изображението с помощта на Cordova? Кои добавки трябва да взема предвид за това?
Метод 1: Добавка Canvas2Image
С този плъгин можете да запазите платно в библиотеката на телефона си, като използвате:
<canvas id="myCanvas" width="165px" height="145px"></canvas>
function onDeviceReady()
{
window.canvas2ImagePlugin.saveImageDataToLibrary(
function(msg){
console.log(msg);
},
function(err){
console.log(err);
},
document.getElementById('myCanvas')
);
}
Не е ясно обаче как imageURI се предава или връща след запазване?
АКТУАЛИЗАЦИЯ 23/02. Опитах следното, но така и не достигна успешното обратно извикване:
$scope.done = функция() {
// todo: iterate over cloaks
$ionicLoading.show({
template: 'Saving images...'
});
// #issue: callback is not called
saveCanvasToPhone().then(successCallback, errorCallback);
var successCallback = function(output) {
$ionicLoading.hide();
window.alert("success call back: " + output) // never reached
$scope.addNewImage(output);
$state.go('tab.dash', {}, {reload: true}); // does not work
$state.go('tab.dash') // does not work
$scope.refreshLocalstorage();
}
// #issue4-nl: not working
var errorCallback = function(error) {
$ionicLoading.hide();
console.log("error cb: "+ error)
window.alert("error cb: " + error)
}
function saveCanvasToPhone() {
var defer = $q.defer();
try {
window.canvas2ImagePlugin.saveImageDataToLibrary(
function(output){
$scope.addNewImage(output); // does not work to save imagepath on localstorage
$scope.debugEntryOther = output // works fine
defer.resolve(output)
$ionicLoading.hide()
},
function(error){
defer.reject(error)
$ionicLoading.hide()
window.alert(error)
},
document.getElementById('canvas')
);
} catch(error) {
defer.reject(error)
$ionicLoading.hide()
console.log("saveCanvasToPhone: trycatch: error: " + error)
}
return defer.promise;
} // save canvas to phone
} // done