【发布时间】:2012-06-16 22:20:57
【问题描述】:
根据文档,setRotation(90) 应该旋转捕获的 JPEG 图片(takePicture 在横向模式下。
这适用于 HTC 手机,但不适用于三星 Google Nexus S 和三星 Galaxy S3。这是一个错误吗?
我知道我可以使用矩阵变换旋转,但希望操作系统可以更有效地执行此操作,并且不想冒在其他设备上过度旋转的风险。
编辑
设置camera.setDisplayOrientation(90); 使预览为纵向模式,但对拍摄的照片没有任何影响。
此外,除了setRotation,我还尝试设置图片大小 - 我将h 与w 翻转:parameters.setPictureSize(1200, 1600);。这也没有任何影响。
解决方案
显然三星手机设置了 EXIF 方向标签,而不是旋转单个像素。正如ariefbayu 建议的那样,使用BitmapFactory 读取位图不支持此标签。他的代码示例就是解决方案,而且这个解决方案也兼容使用inSampleSize。
【问题讨论】:
-
看看这个答案可能会有所帮助:stackoverflow.com/questions/3841122/…
-
@thinksteep: 不 - 我没有通过 android 控制台看到任何错误。
-
@JohnJSmith:答案与表面上的预览有关。我的问题是关于拍照
-
我认为这可能也影响了实际拍摄的照片,但那是前一段时间,它是在 HTC 上。
-
@JohnJSmith: 设置 camera.setDisplayOrientation(90);使预览处于纵向模式,但对拍摄的照片没有任何影响。