我创建了一个布局,我的表面视图已从“原始大小”调整大小,我做了以下内容:
ViewGroup.LayoutParams params = mSurfaceView.getLayoutParams();
int mPixels=getResources().getDimensionPixelSize(R.dimen.profile_pic_dimension); //200
params.width=mPixels;
params.height=mPixels;
mSurfaceView.setLayoutParams(params);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
我得到一个这样的视图: http://img412.imageshack.us/img412/9379/layoutp.png
但是然后..每当我拍照时......它不会像我在视图上看到的那样保存...而是保存它的正常大小,就像视图占据整个屏幕一样(如果表面视图从未调整过。)
我试过用这个:
Camera.ShutterCallback mShutterCallback = new Camera.ShutterCallback() {
@Override
public void onShutter() {
Camera.Parameters p = mCamera.getParameters();
p.setPictureSize(mSurfaceView.getWidth(), mSurfaceView.getHeight());
mCamera.setParameters(p);
}
};
但仍未获得我想要的图像尺寸。
答案 0 :(得分:0)
设置图片(或预览)尺寸时,您不能只提供任何宽度和高度值。相反,您必须使用支持大小列表中的一个项目,您可以通过调用getSupportedPictureSizes()
来检索这些项目(预览的等价物)。
到目前为止,我还没有遇到任何支持拍摄方形照片的设备,所以在4:3,16:9,16:10之后,无论比例如何,拍摄的照片都是“剪切”的自己输出相关部分,并可选择将其缩小到特定维度。可能最直接的方法是创建一个new Bitmap as a subset from a source Bitmap(然后可选择缩小它)。为了获得源位图,您可能需要使用takePicture(...)
将PictureCallback
连接到相机。