【发布时间】:2014-06-06 00:16:19
【问题描述】:
我编写了一个以编程方式捕获照片的 Android 活动。我想将图像保存为具有正确 EXIF 方向数据的 JPEG(就像本机 Android 相机应用程序自动执行的操作一样)。
这是实际拍照的方法(我删除了 try/catch 块):
private void takePhoto() {
camera = Camera.open();
SurfaceTexture dummySurfaceTexture = new SurfaceTexture(0);
camera.setPreviewTexture(dummySurfaceTexture);
camera.startPreview();
camera.takePicture(null, null, jpgCallback);
}
...和回调:
private Camera.PictureCallback jpgCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
releaseCamera();
savePhoto(data);
};
照片拍摄正确,但我的问题是 EXIF 数据显示方向设置为“图像方向:顶部,左手”,无论设备的方向如何,所以当我上传照片时出现颠倒或旋转。
我真的需要手动捕获设备方向(滚动、俯仰、方位角)并自己编写 EXIF 方向吗?相机应用程序如何自动正确写入这些数据?有谁知道正确设置此属性的方法吗?
编辑:我无法使用屏幕方向,因为 Activity 被锁定为纵向模式。
【问题讨论】:
-
我已经阅读了这个答案,但由于我的活动被锁定为纵向模式,因此无法使用。 stackoverflow.com/questions/13245556/…
标签: android camera android-camera exif android-orientation