Phone Gap相机方向问题

8

我已经使用 Phone Gap 版本 0.9.3 开发了一个应用程序...

在我的应用程序中打开相机时,它总是以横向模式打开,并且拍摄的图像以横向格式返回...

我该如何将相机模式更改为纵向?

navigator.camera.getPicture(onsuccess, fail, {quality: 45,destinationType : Camera.DestinationType.DATA_URL, sourceType: src},img_id);

function onsuccess(imageData) {
    localStorage.setItem("image_captured","Yes");
    $('#'+imgID).attr('src', 'data:image/jpeg;base64,' + imageData);
    $("#"+imgID+"_IMG").attr('src', 'data:image/jpeg;base64,' + imageData);
}

在清单文件中我已经提到:

<activity android:name="com.android.camera.Camera"
    android:screenOrientation="portrait">
</activity>

请帮我解决这个问题...


为什么不将它更新至至少1.0版本? - ghostCoder
我创建了一个自定义插件用于Spinner。但是这个插件在1.0或以上版本中无法工作。所以我将其修复到0.9.3版本,现在我的插件可以正常工作。 - Sandeep P
这是我应用程序中的另一个问题。http://stackoverflow.com/questions/9841742/selection-option-in-phonegap-not-working-proper. - Sandeep P
我认为你需要先找到一种让Spinner在1.0版本中工作的方法。自从0.9.3版本以来,已经发生了很多变化,这使得调试变得困难。 - ghostCoder
ya版本已更改为1.4.1...相机仍存在同样的问题... - Sandeep P
4个回答

18

尝试这个: correctOrientation: true

function getPhoto(source) {

    navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 30, 
    destinationType: destinationType.FILE_URI,
    sourceType: source,
    correctOrientation: true });

}

2
correctOrientation 目前在大多数设备上(包括 Android)被忽略。 - Per Hornshøj-Schierbeck
@PerHornshøj-Schierbeck 我也遇到了一个问题,当我试图在拍摄照片后立即在HTML中显示它时,以纵向模式拍摄的照片会以横向模式返回。你如何解决这个问题?“correctOrientation”没有帮助,似乎被忽略了(模拟器/Nexus和Galaxy S3),这是真的... - Philipp Rieber
@PerHornshøj-Schierbeck 谢谢,我也添加了一个解决方案 - 对于我来说,“correctOrientation”参数现在完美地运作。 - Philipp Rieber

7

返回base64格式的图像时,照片方向未被保存(所有EXIF数据都被删除)。

应该使用加速度计或屏幕方向来“知道”图像是以纵向还是横向拍摄,并相应地显示它。


6
"correctOrientation"参数对我来说运行良好 - 但前提是你还要使用"targetWidth"和"targetHeight"参数(例如将它们设置为"800")。似乎有些设备可能没有足够的内存来旋转全分辨率图片。
更新: 这里有一篇很好的文章,关于Phonegap相机代码中的内存、缩放和EXIF问题的有用信息: http://simonmacdonald.blogspot.ca/2012/07/change-to-camera-code-in-phonegap-190.html"

不错的发现。但是对于我设置大小仍然不总是有效。可能与版本有关?我在这里使用的是4.3... - Per Hornshøj-Schierbeck
谢谢,我正在使用Appgyver,在Android 4.4上遇到了同样的问题,你的解决方案起作用了(我将图像作为数据URL加载)。 - Darko Romanov
完美。correctOrientation参数与targetWidth和targetHeight一起使用对我有用。非常感谢。 - Sarah

0

我已经解决了我的问题,通过保存文件URL。该文件将与正确的EXIF数据一起放置在临时文件夹中。但是,在某些设备上,您可能需要在关闭应用程序时手动删除文件。

当引用文件URL而不是数据时,图像似乎会正确显示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接