三星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总是将相机视图视为风景?的主要内容,如果未能解决你的问题,请参考以下文章