Как можно сохранить холст в телефонном альбоме (фотопленка и т. д.) с помощью 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