0

写真を撮るアプリを作っていますが、使いたくありません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();
     }
};

利用可能な最高の解像度で撮影するには、どうすれば「カメラに話しかける」ことができますか?

とにかく、ありがとう(:

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

NBは非常にデバイス固有であるため、サイズが携帯電話のカメラでサポートされているかどうかを確認することを忘れないでください

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 に答える