1. 程式人生 > >cordova儲存圖片到相簿

cordova儲存圖片到相簿

將圖片儲存到相簿的三種方式:
一、檔案操作
有三個引數:
1)URL
2)資料夾名稱你想在你的SD卡的建立
3)檔名稱(你可以給任何名稱的檔案)

所有型別的檔案可以通過使用此程式碼下載。
//第一步檢查引數和網路轉態
function DownloadFile(URL, Folder_Name, File_Name) {
if (URL == null && Folder_Name == null && File_Name == null) {
return;
}
else {
var networkState = navigator.connection.type;
if (networkState == Connection.NONE) {
return;
} else {
download(URL, Folder_Name, File_Name);
}
}
}
/ /第二步得到寫許可權和建立資料夾
function download(URL, Folder_Name, File_Name) {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, fileSystemSuccess, fileSystemFail);
function fileSystemSuccess(fileSystem) {
var download_link = encodeURI(URL);
ext = download_link.substr(download_link.lastIndexOf(‘.’) + 1);
var directoryEntry = fileSystem.root; // to get root path of directory
directoryEntry.getDirectory(Folder_Name, { create: true, exclusive: false }, onDirectorySuccess, onDirectoryFail);
var rootdir = fileSystem.root;
var fp = rootdir.fullPath;
fp = fp + “/” + Folder_Name + “/” + File_Name + “.” + ext;
// download function call
filetransfer(download_link, fp);
}

function onDirectorySuccess(parent) {
// Directory created successfuly
}

function onDirectoryFail(error) {
//Error while creating directory
alert(“Unable to create new directory: ” + error.code);
}

function fileSystemFail(evt) {
//Unable to access file system
alert(evt.target.error.code);
}
}
/ /第三步下載檔案到建立資料夾

function filetransfer(download_link, fp) {
var fileTransfer = new FileTransfer();
fileTransfer.download(download_link, fp,
function (entry) {
alert(“download complete: ” + entry.fullPath);
},
function (error) {
//Download abort errors or download failed errors
alert(“download error source ” + error.source);
//alert(“download error target ” + error.target);
//alert(“upload error code” + error.code);
}
);
}
二、使用PhoneGap的file外掛(此種方式下載的在安卓上面下載完成後看不到圖片需要重啟手機才能看到,不推薦使用)

 var url = 'http://image_url';
    var filePath = 'local/path/to/your/file';
    var fileTransfer = new FileTransfer();
    var uri = encodeURI(url);
    fileTransfer.download(
        uri,
        filePath,
        function(entry) {
            console.log("download complete: " + entry.fullPath);
        },
        function(error) {
            console.log("download error source " + error.source);
            console.log("download error target " + error.target);
            console.log("upload error code" + error.code);
        },
        false,
        {
            headers: {
            }
        }
    );
    $scope.downPhoto = function (photoPath) {
      var pictrueUrl = encodeURI(photoPath);

      function saveImageToPhone(url, success, error) {
        var canvas, context, imageDataUrl, imageData;
        var img = new Image();
        img.onload = function () {
          canvas = document.createElement('canvas');
          canvas.width = img.width;
          canvas.height = img.height;
          context = canvas.getContext('2d');
          context.drawImage(img, 0, 0);
          try {
            imageDataUrl = canvas.toDataURL('image/jpeg', 1.0);
            imageData = imageDataUrl.replace(/data:image\/jpeg;base64,/, '');
            cordova.exec(
              success,
              error,
              'Canvas2ImagePlugin',
              'saveImageDataToLibrary',
              [imageData]
            );
          }
          catch (e) {
            error(e.message);
          }
        };
        try {
          img.src = url;
        }
        catch (e) {
          error(e.message);
        }
      }

      var success = function (msg) {
      //下載成功
      };
      var error = function (err) {
       //下載失敗
      };
      saveImageToPhone(photoPath, success, error);
    }
  })