cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Wargo, John" <john.wa...@sap.com>
Subject RE: Camera targetWidth & targetHeight
Date Wed, 04 Dec 2013 16:10:39 GMT
Apparently, when aspect ratio isn't maintained, it grabs one of the properties and applies
it and drops the other. 

That seems odd to me too. It should fail (and call the error callback).

For me it's weird as well that on iOS in portrait, it's applying the metric to the wrong axis.


-----Original Message-----
From: James Jong [mailto:wjamesjong@gmail.com] 
Sent: Tuesday, December 03, 2013 11:35 AM
To: dev@cordova.apache.org
Subject: Re: Camera targetWidth & targetHeight

For targetWidth = 2048 , targetHeight=768, does it make sense to have the result picture with
width=768,height=1024?  That seems odd to me.

-James Jong

On Dec 3, 2013, at 7:34 AM, John M. Wargo <jwargo23@gmail.com> wrote:

> It occurred to me this morning that I didn't test a scenario where an application deliberately
didn't maintain an appropriate aspect ratio with targetWidth & targetHeight.
> 
> I added a button to my app that set targetWidth to 2048 and targetHeight to 768.
> 
> On Android I got the following:
> 
> Portrait: 768x1024
> Landscape: 1024x768
> 
> On iOS I got the following:
> 
> Portrait: 576x768
> Landscape: 1024x768
> 
> Not what I expected. So apparently the API grabs the smaller property and applies a set
aspect ratio to the resulting photo rather than try to do something weird. Notice again that
on iOS the API applies the restriction weirdly in portrait.
> 
> On 12/2/2013 10:18 PM, Simon MacDonald wrote:
>> IIRC on Android if you only specify the width or height it will determine
>> what the other value should be by using the same aspect ration as the
>> original image.
>> 
>> 
>> Simon Mac Donald
>> http://hi.im/simonmacdonald
>> 
>> 
>> On Mon, Dec 2, 2013 at 10:15 PM, John M. Wargo <jwargo23@gmail.com> wrote:
>> 
>>> A while back I posted a question regarding Camera targetWidth &
>>> targetHeight properties and how they worked. After some discussion, the
>>> conclusion I reached was that the documentation couldn't be correct about
>>> how it worked since there was no way to determine the camera's resolution
>>> with the current API but the docs said I had to provide both parameters.  I
>>> said I'd do some testing and I have finally gotten around to completing it.
>>> Here's what I discovered:
>>> 
>>> I created an application that allowed me to pass in different values for
>>> targetWidth & targetHeight when taking a picture. I tested at the following
>>> image sizes: 640x480, 800x600, 1024x768 as well as setting only the
>>> targetWidth to 1024 or only the targetHeight to 768.
>>> 
>>> Here's the results:
>>> 
>>> Android
>>> Portrait        Landscape
>>> 480x640         640x480
>>> 600x800         800x600
>>> 768x1024        1024x768
>>> 768x1024        1024x768
>>> 768x1024        1024x768
>>> 
>>> 
>>> 
>>> iOS
>>> Portrait        Landscape
>>> 360x480         640x480
>>> 450x600         800x600
>>> 576x768         1024x768
>>> 2448x3264       3264x2448
>>> 2448x3264       3264x2448
>>> 
>>> 
>>> 
>>> Windows Phone 8
>>> Portrait        Landscape
>>> 1836x3264       3264x1836
>>> 1836x3264       3264x1836
>>> 1836x3264       3264x1836
>>> 1836x3264       3264x1836
>>> 1836x3264       3264x1836
>>> 
>>> 
>>> As you can see, Android properly implements the targetWidth & targetHeight
>>> properties. On iOS, it supports setting both properties, but not instances
>>> where only one is specified. Windows Phone 8 ignores the parameters
>>> completely.  On iOS, when you turn the device on its side, the Camera API
>>> applies the target width or height to the wrong axis (Android does this
>>> well however).
>>> 
>>> I'm trying to test this on a BlackBerry device, but my development
>>> environment is giving me fits right now. I'll work on it in the morning and
>>> publish my results when I get them.
>>> 
>>> I would suggest that the android implementation is as expected and that
>>> the other platforms need their implementations of targetWidth &
>>> targetHeight adjusted so it works correctly. The documentation should be
>>> updated as well as it's incorrect today specifying that both properties
>>> must be provided.
>>> 
>>> If the group doesn't want to support only providing one of the properties,
>>> then I would expect that the onError callback is called when only one is
>>> provided rather than simply ignoring them as is the case with iOS and
>>> Windows Phone.
>>> 
>>> I posted my sample application and a spreadsheet with my results to
>>> https://github.com/johnwargo/camera_res_test
>>> 
>>> --
>>> John M. Wargo
>>> @johnwargo <http://twitter.com/johnwargo>
>>> www.johnwargo.com <http://www.johnwargo.com>
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------------------------------------
>>> ------------------------------
>>> 
> 


Mime
View raw message