[ 
https://issues.apache.org/jira/browse/CB-12512?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15886191#comment-15886191
 ] 

Kyle Slack commented on CB-12512:
---------------------------------

This is in fact the goal, to store the DATA_URL for later viewing outside of 
the mobile application. We have, as a workaround, switched back to the DATA_URL 
as the problem seems to be specifically related to the quality value being 
passed in the camera options. We have set this to 30 and can successfully use 
the DATA_URL method on Android. However, on iOS, this method is proving to not 
be successful. Where Android is working pretty smoothly now with the DATA_URL 
option, iOS is now taking around 6 seconds or more delayed between views in our 
application following capturing a photo. It seems to take the photo and 
displays in our <img> element just fine. I noticed while debugging that on iOS 
when the camera is fired, the following error is logged immediately:

Failed to load resource: The requested URL was not found on this server.        
   file:///var/containers/Bundle/Application/(UUID)/(application 
name.app)/www/null

Updated Code:

viewModel.getPicture = function () {
        navigator.camera.getPicture(function (data) {
            //use setTimeout especially w/ iOS to allow time for the UI to 
replace/resize the controls and statusbar
            setTimeout(function () {
                StatusBar.overlaysWebView(true);
                setTimeout(function () {
                    StatusBar.overlaysWebView(false);
                }, 250);
            }, 250);
            viewModel.txtImageStatus("Loading...");
            document.getElementById("image").src = "data:image/png;base64," + 
data;
            viewModel.showNoImage(false);
            document.getElementById("image").style.display = "block";
            viewModel.shipment.CustomerPhotoInfo = data;
        }, function (msg) {
            if (!msg == "Camera cancelled.") {
                viewModel.popVisible(true);
                viewModel.popMessage("Failed: " + msg);
            };
            setTimeout(function () {
                StatusBar.overlaysWebView(true);
                setTimeout(function () {
                    StatusBar.overlaysWebView(false);
                }, 250);
            }, 250);
        }, {
            quality: 30,
            destinationType: Camera.DestinationType.DATA_URL,
            saveToPhotoAlbum: false,
            correctOrientation: true,
            encodingType: DevExpress.devices.real().platform == "ios" ? 
Camera.EncodingType.PNG : Camera.EncodingType.JPEG
        });
    }


> No way to get from a FILE_URL to a DATA_URL onsuccess
> -----------------------------------------------------
>
>                 Key: CB-12512
>                 URL: https://issues.apache.org/jira/browse/CB-12512
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Android, iOS
>         Environment: Android 4.0+ / iOS 9.0+
>            Reporter: Kyle Slack
>
> The onsuccess function of the getPicture method uses the FILE_URI to set an 
> <img> source perfectly fine, however, the conversion of this FILE_URI to get 
> the image data or DATA_URL is never successful no matter the means attempted. 
> Even utilizing your posted methods to get the actual file have failed:
> window.resolveLocalFileSystemURL(imgUri, function success(fileEntry) - is not 
> getting to the image, always results in null DATA_URL in the end.
> Our method using FILE_URI:
> {code}
> navigator.camera.getPicture(function (data) {
>             setTimeout(function () {
>                 StatusBar.overlaysWebView(true);
>                 setTimeout(function () {
>                     StatusBar.overlaysWebView(false);
>                 }, 250);
>             }, 250);
>             viewModel.txtImageStatus("Loading...");
>             document.getElementById("image").src = data; 
>             viewModel.showNoImage(false);
>             document.getElementById("image").style.display = "block";
>             SavetoShipment(data);
>         }, function (msg) {
>             if (!msg == "Camera cancelled.") {
>                 viewModel.popVisible(true);
>                 viewModel.popMessage("Failed: " + msg);
>             };
>             setTimeout(function () {
>                 StatusBar.overlaysWebView(true);
>                 setTimeout(function () {
>                     StatusBar.overlaysWebView(false);
>                 }, 250);
>             }, 250);
>         }, {
>             quality: DevExpress.devices.real().platform == "ios" ? 50 : 100,
>             destinationType: Camera.DestinationType.FILE_URI,
>             saveToPhotoAlbum: false,
>             correctOrientation: true,
>             encodingType: DevExpress.devices.real().platform == "ios" ? 
> Camera.EncodingType.PNG : Camera.EncodingType.JPEG
>         });
> function SavetoShipment(fileURI) {
>         var fileReader = new FileReader();
>         fileReader.onload = function (fileLoad) {
>             viewModel.shipment.CustomerPhotoInfo = fileLoad.target.result;
>         };
>         fileReader.readAsDataURL(fileURI);
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to