【问题标题】:Cwac-camera and Nexus S Portrait - Strange Bitmap sizeCwac 相机和 Nexus S 肖像 - 奇怪的位图大小
【发布时间】:2013-07-10 18:48:07
【问题描述】:

Nexus S 出现问题,在第一个问题Cwac-camera crash when picture taken 之后:

我用 screenOrientation:portrait 拍一张照片,但拍一张横向照片,所以旋转 90°

在代码中

在我的 SimpleCameraHost 扩展类中,接收到的位图具有风景图像的尺寸

@Override
public void saveImage(byte[] image)
{
      Bitmap bitmap = BitmapFactory.decodeByteArray(image, 0, image.length);
...

LOG bitmap.getWidth => 2560

LOG bitmap.getHeight => 1920

【问题讨论】:

    标签: android camera nexus-s commonsware-cwac


    【解决方案1】:

    照片的方向应该与设备的实际方向一致。 IOW,如果设备是纵向的,图像应该是纵向的。如果设备是横向的,图像应该是横向的。 android:screenOrientation 值的选择(或根本没有)不应该影响这些结果——它只会影响你的 UI 行为方式。

    我刚刚在 Nexus S 上进行了测试,后置摄像头按预期工作。我在demo应用中添加了android:screenOrientation="portrait",当手机竖屏时,照片保存为竖屏,手机横屏时,照片保存为横屏。

    如果您认为自己有相反的证据,请创建一个重现错误的示例项目,并在该项目上file an issue,发布该示例项目以及运行它以重现错误的步骤。


    更新

    好的,我想我现在明白你所看到的了。 Bitmap.decodeByteArray() 显然关注 EXIF 标头,而很多图像查看器却没有。 Nexus S 的行为与我迄今为止测试过的其他三星设备不同,我需要对 Nexus S 输出的这些标头进行一些清理工作。我已经添加了an issue about this,希望我能尽快解决这个问题。

    顺便说一句,我还记录了an enhancement request,以便通过另一种saveImage() 方法为您提供Bitmap,以避免您必须解码byte[]

    【讨论】:

    • 在 Demo 项目中 -i 覆盖 saveImage() 函数。我有相同的日志。 2560*1920 的图像。 - 横向 640*480 的图像。 - 当我想使用面向字体的相机时,应用程序崩溃
    • @DamienRomito:“当我想使用面向字体的相机时,应用程序崩溃”——正如您链接到的问题中所述,这已经作为一个错误提交:github.com/commonsguy/cwac-camera/issues/8跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 2014-04-19
    • 2014-06-09
    相关资源
    最近更新 更多