将PhoneGap中捕获的图像移动到SD卡中的文件夹

时间:2011-12-09 09:32:06

标签: android cordova camera storage phonegap-build

我使用camera.getPicture使用PhoneGap捕获图像。现在,我无法将捕获的图像移动/复制到我选择的位置。我尝试使用PhoneGap的File API,但我没能成功。有谁能告诉我下面的代码有什么问题?

PS:我在Android Galaxy S2中运行此应用程序。照片将保存在默认照片库中。

<script type="text/javascript" charset="utf-8">

        var pictureSource;   // picture source
        var destinationType; // sets the format of returned value 
        var photoid=window.localStorage.getItem("photoid");
        var photoData=null;
        // Wait for PhoneGap to connect with the device
        //
        document.addEventListener("deviceready",onDeviceReady,false);

        // PhoneGap is ready to be used!
        //
        function onDeviceReady() {
            pictureSource=navigator.camera.PictureSourceType;
            destinationType=navigator.camera.DestinationType;

        }
        function capturePhoto() {
            // Take picture using device camera and retrieve image as base64-encoded string
            navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50 });
        }

        // A button will call this function
        //
        function capturePhotoEdit() {
            // Take picture using device camera, allow edit, and retrieve image as base64-encoded string  
            navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 20, allowEdit: true }); 
        }

        // A button will call this function
        //
        function getPhoto(source) {
            // Retrieve image file location from specified source
            navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50, 
                                        destinationType: destinationType.FILE_URI,
                                        sourceType: source });
        }

        function onPhotoDataSuccess(imageData) {
            // Uncomment to view the base64 encoded image data
            // console.log(imageData);

            // Get image handle
            //
            var smallImage = document.getElementById('smallImage');

            // Unhide image elements
            //
            smallImage.style.display = 'block';

            // Show the captured photo
            // The inline CSS rules are used to resize the image
            //
            smallImage.src = "data:image/jpeg;base64," + imageData;
            alert(imageData);
            photoData = imageData;
            window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
        }

        function gotFS(fileSystem) {
            fileSystem.root.getFile("/sdcard/external_sd/sastphotos/"+photoid+".jpg", null, gotFileEntry, fail);
        }

        function gotFileWriter(writer) {
            writer.onwrite = function(evt) {
                alert("write success");
            };
            writer.write(photoData);
        }

        function fail(error) {
            alert(error.code);
        }


        function onPhotoURISuccess(imageURI) {
            // Uncomment to view the image file URI 
            // console.log(imageURI);
            //alert("photo captured");
            uploadPhoto(imageURI);
        }

        function getPhoto(source) {
            // Retrieve image file location from specified source
            navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
                                        destinationType: destinationType,
                                        sourceType: source });
        }

        // Called if something bad happens.
        // 
        function onFail(message) {
            alert('Failed because: ' + message);
        }

        </script>

0 个答案:

没有答案