在处理ACTION_IMAGE_CAPTURE活动时我遇到了方向问题.我已经使用过,TAG_ORIENTATION所以我会相应地旋转图片.但现在我们发现在一些较新的设备上这不起作用.事实上,它为所有方向返回1.
这是我们观察到的设备列表;
有趣的是,一旦这个图像是图库它正确显示,如果我选择它,TAG_ORIENTATION就会正确填充.所以不知何故OS正确地填写了这些信息,但没有ActivityResult.
确定方向的最可靠方法是什么?有人在另一个问题上建议比较高度和宽度但是在获得这些时,它们会根据方向正确切换(另一个谜)
编辑:似乎这可能连接到另一个错误,其中操作系统复制在库中拍摄的图像(它只应该将图像保存在我们指定的URL中),事情是这个图像在库中有ORIENTATION信息而指定位置的一个没有.
这是错误; http://code.google.com/p/android/issues/detail?id=19268
编辑2:我已经向Android提交了一个新的错误.我很确定这是与上述错误相关的操作系统错误. http://code.google.com/p/android/issues/detail?id=22822
我从相机/画廊意图到我的应用程序的照片.在许多手机中,我从意图/ Uri中读取的图片已经旋转到正确的方向.例如N1,Legend,Desire就是这种情况.
但是在某些手机上(例如Milestone1,GalaxyS),无论拍摄图片的方式如何,图片总是在风景中.这意味着在我的应用程序中,纵向图片以错误的方式呈现给用户.我试图读取图片的EXIF信息,但方向标记始终为0.必须有一种方法可以找到图片的正确方向,因为在Milestone1中,图库应用程序正确显示肖像图片.
我如何知道在向用户展示之前是否需要自己旋转图片?
谢谢你的帮助!
我正在尝试使用以下代码拍摄照片并将其存储到内部存储中:
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
takenPhoto = new File(uploadsFolder, getNewPicFileName());
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(takenPhoto));
startActivityForResult(intent, SHOOT_MEDIA_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
问题是在Nexus S和Galaxy S设备默认情况下,ACTION_IMAGE_CAPTURE意图的单一方向是横向.如果我以纵向模式拍摄照片,则该照片将被存储到旋转的"拍摄照片"文件中.
这个问题似乎只出现在三星Galaxy S设备(Galaxy S和Nexus S)上,我试过的其他设备根据图像拍摄时的方向进行自动旋转.
我将非常感谢有关该问题的任何帮助.