我正在制作应用程序来拍照,但我不想使用startActivityForResult
。
我正在使用SurfaceView
和PictureCallback()
但问题是,照片始终为320x240px
以下是代码:
PictureCallback myPictureCallback_JPG = new PictureCallback(){
public void onPictureTaken(byte[] arg0, Camera arg1) {
Uri uriTarget = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, new ContentValues());
OutputStream imageFileOS;
try {
imageFileOS = getContentResolver().openOutputStream(uriTarget);
imageFileOS.write(arg0);
imageFileOS.flush();
imageFileOS.close();
Toast.makeText(MainActivity.this,"Image saved: " + uriTarget.toString(),Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
camera.startPreview();
}
};
我如何“对相机说”以获得最佳分辨率?
无论如何,thakyou(:
答案 0 :(得分:3)
JpeqQuality是关于压缩的,但是相机参数似乎是正确的指针
您可以从相机获取当前参数
Camera.Parameters parameters = camera.getParameters();
然后强制执行预览/图片的大小
parameters.setPreviewSize(previewWidth, previewHeight);
parameters.setPictureSize(newWidth, newHeight);
// push it back to camera
camera.setParameters(parameters);
请勿忘记检查手机上的相机是否支持尺寸,因为它非常适合设备
答案 1 :(得分:1)
在onPictureTaken回调方法中,图片已被拍摄,因此无处可做。
通过setParameters方法实例化Camera对象后设置参数。看看Camera.Parameters课程。我认为方法setJpegQuality可能会让您感兴趣。
基本上,我认为它应该是这样的:
Camera camera= Camera.open();
camera.getParameters().setJpegQuality(100); // being 100 the max quality and 0 the min