【问题标题】:Android camera preview: 1:1 aspect ratio, how?Android 相机预览:1:1 纵横比,怎么样?
【发布时间】:2011-05-04 11:52:34
【问题描述】:

嗨 我正在尝试使用相机在我的一个应用程序中捕获图像。比较特别的是我需要一个正方形的预览区(最后还有图片)。我尝试将图片和预览的大小定义为 1:1 像素比,但没有任何接缝可以工作。无论我做什么,图片在正方形上看起来都“被压扁”了。

有人知道如何解决这个问题吗?

代码:

public class AddFromCameraActivity extends Activity implements SurfaceHolder.Callback {
private Camera mCamera;
private Parameters mParameters; 
private SurfaceView mCameraPreview;
private SurfaceHolder mSurfaceHolder; 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.addimagefromcameramain); 
    initialise(); 
    //Testing area
    mCamera = Camera.open(); 
    mParameters = mCamera.getParameters(); 
    mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO); 
    mParameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); 
    mParameters.setJpegQuality(50); 
    mParameters.setJpegThumbnailQuality(50); 
    mParameters.setPictureSize(1024, 1024);
    //mParameters.setPreviewFormat(ImageFormat.JPEG); 
    mParameters.setJpegThumbnailSize(256, 256); 
    mParameters.setPreviewSize(500, 500); 
    mCamera.setParameters(mParameters);
}
private void initialise()
{
    mCameraPreview = (SurfaceView)findViewById(R.id.cameraSurfaceView); 
    mSurfaceHolder = mCameraPreview.getHolder(); 
    mSurfaceHolder.addCallback(this); 
    mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
    mSurfaceHolder.setFixedSize(500, 500); 
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
        int height) {

}
@Override
public void surfaceCreated(SurfaceHolder holder) {
    try {
        mCamera.setPreviewDisplay(mSurfaceHolder);
        mCamera.startPreview(); 
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    mCamera.stopPreview(); 
    mCamera.release(); 
}
@Override
public void onPause()
{
    mCamera.release(); 
}
}

谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以查看 Android SDK 中的 CameraPreview sample 代码。 getOptimalPreviewSize 方法展示了如何处理不同的相机尺寸,onLayout 方法展示了如何在 Activity 中布局预览表面。

    【讨论】:

    猜你喜欢
    • 2013-07-22
    • 2020-01-26
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 2017-05-03
    • 2013-12-19
    相关资源
    最近更新 更多