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");
             });
 
         };

Reply via email to