android – 在Nexus S和三星Galaxy S I9000上的ACTION_IMAGE_CAPTURE方向问题

android – 在Nexus S和三星Galaxy S I9000上的ACTION_IMAGE_CAPTURE方向问题,第1张

概述我正在尝试使用以下代码拍摄照片并将其存储到内部存储中: Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);takenPhoto = new File(uploadsFolder, getNewPicFileName());intent.putExtra(MediaStore.EXTRA_OU 我正在尝试使用以下代码拍摄照片并将其存储到内部存储中:
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)上,我尝试的其他设备根据图像拍摄时的方向进行自动旋转.

我将非常感谢有关该问题的任何帮助.

解决方法 据我所知,这种情况正在发生,因为此Intent未设置MediaStore.Images.ImageColumns.ORIENTATION值.当事情通过普通的相机应用程序时它确实设置.

但是,在我的Nexus S上,该文件仍然可以获得正确的EXIF数据.所以你可以得到这样的方向:

ExifInterface exif = new ExifInterface("filepath");exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,ExifInterface.ORIENTATION_norMAL);

然后你可以使用ContentResolver.update添加正确的ORIENTATION数据.您只需将ExifInterface方向选项转换为旋转度数.

您的另一个选择是创建自己的活动来 *** 作相机硬件并记录文件.然后你要跟踪旋转和保存捕获的图像时将值写入元数据.由于相机应用程序是AndroID的一部分,您可以复制&修改它没有太多的痛苦.

总结

以上是内存溢出为你收集整理的android – 在Nexus S和三星Galaxy S I9000上的ACTION_IMAGE_CAPTURE方向问题全部内容,希望文章能够帮你解决android – 在Nexus S和三星Galaxy S I9000上的ACTION_IMAGE_CAPTURE方向问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1135014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存