在Android中,可以通过设置相机参数来限制图像的大小。下面是一个示例代码,演示如何限制相机拍摄的图像大小:
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder mHolder;
private Camera mCamera;
public CameraPreview(Context context, Camera camera) {
super(context);
mCamera = camera;
mHolder = getHolder();
mHolder.addCallback(this);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
} catch (IOException e) {
Log.d(TAG, "Error setting camera preview: " + e.getMessage());
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
if (mHolder.getSurface() == null) {
return;
}
try {
mCamera.stopPreview();
} catch (Exception e) {
// ignore
}
try {
Camera.Parameters parameters = mCamera.getParameters();
// 设置图像大小
parameters.setPictureSize(1280, 720); // 设置为1280x720像素
mCamera.setParameters(parameters);
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();
} catch (Exception e) {
Log.d(TAG, "Error starting camera preview: " + e.getMessage());
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// 释放相机资源
mCamera.release();
}
}
public class MainActivity extends AppCompatActivity {
private Camera mCamera;
private CameraPreview mPreview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取相机实例
mCamera = getCameraInstance();
// 创建相机预览视图
mPreview = new CameraPreview(this, mCamera);
// 将相机预览视图添加到布局中
FrameLayout previewLayout = findViewById(R.id.camera_preview);
previewLayout.addView(mPreview);
}
// 获取相机实例的方法
private Camera getCameraInstance() {
Camera camera = null;
try {
camera = Camera.open();
} catch (Exception e) {
Log.d(TAG, "Error opening camera: " + e.getMessage());
}
return camera;
}
}
在上述代码中,我们在surfaceChanged()方法中设置了图像的大小为1280x720像素。你可以根据自己的需求修改这个值。