安卓
我正尝试使用以下代码拍摄照片并将其存储到内部存储器中:
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);
问题在于Nexus S和Galaxy S设备默认情况下ACTION_IMAGE_CAPTURE意图的单一方向是横向。 如果我在肖像模式下拍摄照片,该照片将存储到旋转的“拍照”文件中。
这个问题似乎只出现在三星Galaxy S设备(Galaxy S和Nexus S)上,我试过的另一个设备根据拍摄时的方向自动旋转。
我非常感谢在这个问题上的任何帮助。
从我所知道的情况来看,这是因为MediaStore.Images.ImageColumns.ORIENTATION
值没有被这个Intent设置。 当事情通过普通的相机应用程序时,它确实会被设置。
然而,在我的Nexus S上,该文件仍然可以获得正确的EXIF数据。 所以你可以得到这样的方向:
ExifInterface exif = new ExifInterface("filepath");
exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_NORMAL);
然后你可以使用ContentResolver.update添加正确的ORIENTATION数据。 您只需将ExifInterface方向选项转换为度数旋转。
您的其他选项是创建您自己的活动来操作相机硬件并记录文件。 然后,您将保存跟踪旋转并在保存捕获的图像时将值写入元数据。 由于相机应用程序是Android的一部分,因此您可以复制并修改它,而不会太痛苦。
我在包括Galaxy Ace在内的三星手机上也看到了这个问题,(我把相机动作称为与您不同的方法)
我的猜测是这是OS /硬件级别的问题。 您是否尝试过使用本机相机应用程序拍摄照片,并将其管理为在该应用程序中获得正确的方向?
链接地址: http://www.djcxy.com/p/7205.html上一篇: android