cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kerri Shotts (JIRA)" <>
Subject [jira] [Commented] (CB-12512) No way to get from a FILE_URL to a DATA_URL onsuccess
Date Tue, 28 Feb 2017 16:57:45 GMT


Kerri Shotts commented on CB-12512:

See inline below:

1. We were working under the assumption that PNGs have better compression than other image
formats, it doesn't matter much the encoding as long as the data is saved, PNG/JPEG can be
utilized as PNG or JPEG when displaying the image later. We have switched over to using JPEG
in this application to use less memory.

PNGs are great for images with lots of data duplication -- essentially computer graphics.
This is why icons are typically in PNG format -- they usually have a small(-ish) number of
colors, and those colors typically come in long runs, all of which lends itself to great lossless
compression. Photographic data, however, isn't favorable because it's using millions of colors,
and there's very little chance of having long runs in the data.

It's not always 100% applicable, but I tend to live by this rule: photographic images &
images with lots of detail & color = JPEG, simplified computer graphics = PNG. 

2. I've tested this without errors where on Android we take a JPEG and then display with the
data:image/png;base64 preamble but this isn't much of a concern on our end.

I'd suggest using the correct preamble since one can't anticipate when using the incorrect
preamble might break. The view must be using format detection to render the image correctly,
but there's always the possibility that some web view out there on some device at some point
might break. Besides, it helps future devs who come across the code -- they might be wondering
about how things are managing to work with the preamble mismatch.

3. No we do not need full-resolution images. This is a simple low quality image just to verify
that something happened with picture proof. I have set the targetWidth and targetHeight each
to 600. I can also verify the aspect ration isn't a problem as all images captured fill to
the view width and follows the CSS rules properly for displaying within our application.

Good; this is the fastest way to reducing the amount of data that has to be stored & that
has to traverse the bridge.  Glad it's working for you.

I'm going to go ahead and close the issue. Good luck with your project.

> No way to get from a FILE_URL to a DATA_URL onsuccess
> -----------------------------------------------------
>                 Key: CB-12512
>                 URL:
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Plugin Camera, Plugin File
>         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}
> (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 =;
>         };
>         fileReader.readAsDataURL(fileURI);
>     }
> {code}

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message