Repository: cordova-plugin-camera Updated Branches: refs/heads/master 1cf38cd77 -> ffd46c4ef
Use WinJS functionality to resize image instead of File plugin functionality Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/commit/ffd46c4e Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/tree/ffd46c4e Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/diff/ffd46c4e Branch: refs/heads/master Commit: ffd46c4ef503bee65cfc9ad5e0ca8ff2d3fa3114 Parents: 1cf38cd Author: Vladimir Kotikov <[email protected]> Authored: Wed Jun 11 12:49:58 2014 +0400 Committer: Vladimir Kotikov <[email protected]> Committed: Wed Jun 11 12:49:58 2014 +0400 ---------------------------------------------------------------------- src/windows8/CameraProxy.js | 80 ++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 52 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/blob/ffd46c4e/src/windows8/CameraProxy.js ---------------------------------------------------------------------- diff --git a/src/windows8/CameraProxy.js b/src/windows8/CameraProxy.js index 9f21c44..cad54df 100644 --- a/src/windows8/CameraProxy.js +++ b/src/windows8/CameraProxy.js @@ -69,64 +69,40 @@ module.exports = { } else { tempPhotoFileName = "camera_cordova_temp_return.jpg"; } - var imgObj = new Image(); - var success = function (fileEntry) { - var successCB = function (filePhoto) { - var fileType = file.contentType, - reader = new FileReader(); - reader.onloadend = function () { - var image = new Image(); - image.src = reader.result; - image.onload = function () { - var imageWidth = targetWidth, - imageHeight = targetHeight; - var canvas = document.createElement('canvas'); - - canvas.width = imageWidth; - canvas.height = imageHeight; - - var ctx = canvas.getContext("2d"); - ctx.drawImage(this, 0, 0, imageWidth, imageHeight); - - // The resized file ready for upload - var _blob = canvas.msToBlob(); - var _stream = _blob.msDetachStream(); - var storageFolder = Windows.Storage.ApplicationData.current.localFolder; - storageFolder.createFileAsync(tempPhotoFileName, Windows.Storage.CreationCollisionOption.generateUniqueName).done(function (file) { - file.openAsync(Windows.Storage.FileAccessMode.readWrite).done(function (fileStream) { - Windows.Storage.Streams.RandomAccessStream.copyAndCloseAsync(_stream, fileStream).done(function () { - var _imageUrl = URL.createObjectURL(file); - successCallback(_imageUrl); - }, function () { - errorCallback("Resize picture error."); - }); - }, function () { - errorCallback("Resize picture error."); - }); - }, function () { - errorCallback("Resize picture error."); - }); + var storageFolder = Windows.Storage.ApplicationData.current.localFolder; + file.copyAsync(storageFolder, file.name, Windows.Storage.NameCollisionOption.replaceExisting).then(function (storageFile) { + Windows.Storage.FileIO.readBufferAsync(storageFile).then(function(buffer) { + var strBase64 = Windows.Security.Cryptography.CryptographicBuffer.encodeToBase64String(buffer); + var imageData = "data:" + file.contentType + ";base64," + strBase64; + var image = new Image(); + image.src = imageData; + image.onload = function() { + var imageWidth = targetWidth, + imageHeight = targetHeight; + var canvas = document.createElement('canvas'); - }; - }; + canvas.width = imageWidth; + canvas.height = imageHeight; - reader.readAsDataURL(filePhoto); - }; + canvas.getContext("2d").drawImage(this, 0, 0, imageWidth, imageHeight); - var failCB = function () { - errorCallback("File not found."); - }; - fileEntry.file(successCB, failCB); - }; + var fileContent = canvas.toDataURL(file.contentType).split(',')[1]; - var storageFolder = Windows.Storage.ApplicationData.current.localFolder; - file.copyAsync(storageFolder, file.name, Windows.Storage.NameCollisionOption.replaceExisting).then(function (storageFile) { - success(new FileEntry(storageFile.name, storageFile.path)); - }, function () { - fail(FileError.INVALID_MODIFICATION_ERR); + var storageFolder = Windows.Storage.ApplicationData.current.localFolder; + + storageFolder.createFileAsync(tempPhotoFileName, Windows.Storage.CreationCollisionOption.generateUniqueName).done(function (storagefile) { + var content = Windows.Security.Cryptography.CryptographicBuffer.decodeFromBase64String(fileContent); + Windows.Storage.FileIO.writeBufferAsync(storagefile, content).then(function () { + successCallback("ms-appdata:///local/" + storagefile.name); + }, function () { + errorCallback("Resize picture error."); + }); + }); + }; + }); }, function () { - errorCallback("Folder not access."); + errorCallback("Can't access localStorage folder"); }); };
