三星galaxy s2总是将相机视图视为风景?

Posted

技术标签:

【中文标题】三星galaxy s2总是将相机视图视为风景?【英文标题】:samsung galaxy s2 always treat camera view as landscape? 【发布时间】:2014-05-15 09:36:17 【问题描述】:

我的应用要求用户拍照然后保存。

我注意到三星 Galaxy S2 拍摄人像照片

但是当我将它保存到服务器时,我只能在服务器中以横向方式看到它。

(即使它是纵向拍摄的)。

我在使用其他手机(Samsung S4、Nexus 5)时不会发生这种情况。

当我查看照片库时,我看到的是纵向照片。

更新

奇怪的是,在我的 java 代码中,它似乎是纵向的

所以我真的不明白:

            if (getContext().getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) 
                //a             
else 
                //b
            

但我看到了一些奇怪的东西:使用 S2 相机时,设置和其他原生对话框都是横向的。见附件:

更新2

我检查了exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,得到了 6 个 (ExifInterface.ORIENTATION_ROTATE_90)

所以我尝试将其设置为 ORIENTATION_ROTATE_270 或 ORIENTATION_NORMAL

但没用

    ExifInterface exif;
    try 
      exif = new ExifInterface(imageFilename);
      int orientation =
          exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
      exif.setAttribute(ExifInterface.TAG_ORIENTATION,
          String.valueOf(ExifInterface.ORIENTATION_ROTATE_270));
      exif.saveAttributes();
      orientation =
          exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
      boolean b = orientation == Configuration.ORIENTATION_LANDSCAPE;

     catch (IOException e) 
      // TODO Auto-generated catch block
      e.printStackTrace();
    

【问题讨论】:

你应该试试。这个问题发生在三星设备上。 ***.com/questions/13245556/… GovindRathod 请查看我的更新 【参考方案1】:

你是对的。 Camera.Parameters.setRotation()的文档很清楚:

相机驱动程序可以在 EXIF 标头中设置方向,而无需 旋转图片。或者司机可以旋转图片和 EXIF 缩略图。如果旋转 Jpeg 图片,则 EXIF 标头将丢失或为 1(行 #0 位于顶部,列 #0 位于左侧 边)。

解决方案是在上传之前实际执行图片旋转,或者可能在服务器上(选择取决于您的产品要求)。您可以使用 Java MediaUtil 库,参见例如https://***.com/a/15302674/192373.

【讨论】:

谢谢。为什么将 exif 标签设置为“rotation_undefined”或“rotation_noraml”?我设法将其设置为所需的值,但图像仍在服务器上旋转。 我很困惑。你为什么建议The solution is to actually perform rotation of the pictures before upload而不使用public void onOrientationChanged(int orientation) 你在什么情况下看到“rotation_undefined”? 让我解释一下。即使 EXIF 标志定义了正确的方向,一些图像查看器也会忽略此标志并显示旋转的图像。您无法修复世界,因此如果您希望图像普遍正确,可以根据 EXIF 标志(或设备方向)执行旋转。 Camera.Parameters.setRotation() 不影响预览。其目的是旋转捕获的 Jpeg。有些设备实际上会旋转图像,但有些设备只设置 EXIF 标志。有一个不同的 API,Camera.setOrientation(),它负责预览,但不负责 takePicture()。

以上是关于三星galaxy s2总是将相机视图视为风景?的主要内容,如果未能解决你的问题,请参考以下文章

相机意图不适用于三星 Galaxy S3

三星Galaxy Tab S2上市,压制苹果之心凸显

Android 三星 Galaxy S4 自定义相机预览失真

三星 Galaxy S3 上的 Android 相机预览不正确

过滤以防止三星 Galaxy 相机从 Play 商店访问应用程序

我的相机应用程序在三星 Galaxy S 中给出空值