拍摄分辨率更高的照片

时间:2012-11-21 20:04:44

标签: android camera

我正在制作应用程序来拍照,但我不想使用startActivityForResult

我正在使用SurfaceViewPictureCallback()

但问题是,照片​​始终为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(:

2 个答案:

答案 0 :(得分:3)

JpeqQuality是关于压缩的,但是相机参数似乎是正确的指针

您可以从相机获取当前参数

Camera.Parameters parameters = camera.getParameters();

然后强制执行预览/图片的大小

parameters.setPreviewSize(previewWidth, previewHeight);
parameters.setPictureSize(newWidth, newHeight);
// push it back to camera
camera.setParameters(parameters);

请勿忘记检查手机上的相机是否支持尺寸,因为它非常适合设备

http://developer.android.com/reference/android/hardware/Camera.Parameters.html#getSupportedPictureSizes()

答案 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