SurfaceView上的相机:设置拍摄的照片方向

时间:2014-04-09 14:33:55

标签: android android-camera surfaceview

这是在surfaceView中拍摄照片的mt代码:

@Override
public void surfaceCreated(SurfaceHolder holder) {
    mCamera = Camera.open();

    try {
        mCamera.setPreviewDisplay(holder);
        mCamera.setDisplayOrientation(90);


    } catch (IOException exception) {
        mCamera.release();
        mCamera = null;
    }

}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
        int height) {
    Camera.Parameters params = mCamera.getParameters();
    Camera.Size result = getBestPreviewSize(params, width, height);
    params.setPreviewSize(result.width, result.height);

    params.setPictureFormat(ImageFormat.JPEG);
    params.setJpegQuality(100);
    mCamera.setParameters(params);

    mCamera.startPreview();

}

图片预览处于纵向模式,但图片保存在我的存储空间中。如何以相同的预览方向保存图片?

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,但是我在解决它时只需要一行代码 surfaceChanged方法

<强> params.setRotation(90);

将您的代码更改为:

public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {
    Camera.Parameters params = mCamera.getParameters();
    Camera.Size result = getBestPreviewSize(params, width, height);
    params.setPreviewSize(result.width, result.height);

    params.setRotation(90)  ***//Just add this single line of code***

    params.setPictureFormat(ImageFormat.JPEG);
    params.setJpegQuality(100);
    mCamera.setParameters(params);

    mCamera.startPreview();

}

答案 1 :(得分:0)

在您的Activity中将旋转声明为静态int变量

rotation = getWindowManager()。getDefaultDisplay()。getRotation();

然后在相机预览类

中添加此行
 if(YourActivityname.rotation == 0 || YourActivityname.rotation == 180)
        this.mCamera.setDisplayOrientation(90);
   else
        this.mCamera.setDisplayOrientation(0);

参考这个 http://developer.android.com/reference/android/hardware/Camera.Parameters.html#setRotation%28int%29

  

public void setRotation(int rotation)

答案 2 :(得分:0)

setRotation()的文档中明确写出系统可能选择仅设置图像旋转的EXIF标志。实际上,在许多设备上,e.g. Samsung这正是发生的事情。

您可以使用Android portJava open source library,它为无损Jpeg旋转提供了一个类。