0

我正在制作一个应用程序来拍照,但我不想使用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();
     }
};

我如何“对相机说”以获得最佳分辨率?

无论如何,谢谢(:

4

2 回答 2

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 ()

于 2012-11-21T22:28:56.147 回答
1

在 onPictureTaken 回调方法中,图片已经拍摄完毕,所以没有什么可做的。

在实例化 Camera 对象后,通过 setParameters 方法设置参数。看看Camera.Parameters类。我认为setJpegQuality方法可能会让您感兴趣。

基本上,我认为它应该是这样的:

Camera camera= Camera.open();
camera.getParameters().setJpegQuality(100); // being 100 the max quality and 0 the min
于 2012-11-21T21:16:42.573 回答