1

カメラを使用して画像をキャプチャし、ImageView に表示するアプリを実装しようとしています。ただし、システムは画面に表示する前に画像の解像度を 204x153 にサイズ変更しますが、画像の元の解像度 (3264x2448) を SD カードに保存します。

これは私のコードです。

buttonCapture.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent intentCamera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            bmpUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(),  
                    "pic_" + String.valueOf(System.currentTimeMillis()) + ".jpg"));  
            try {  
                intentCamera.putExtra("return-data", false);  
                startActivityForResult(intentCamera, resultOpenCamera);  
            } 
            catch (ActivityNotFoundException e) {  
                e.printStackTrace();  
            }               
        }
    });

そして私のonActivityResult

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == resultOpenCamera && resultCode == RESULT_OK && null != data) {
            setContentView(R.layout.preview);

            if(data.getAction() != null){  

               Uri selectedImage = data.getData();
               bmpUri = selectedImage;
               // display image received on the view
               Bundle newBundle = data.getExtras();
               Bitmap theImage = (Bitmap) newBundle.get("data");
               displayImage(preProcessing(theImage));  
               System.out.println("theImage height n width = "+theImage.getHeight()+" + "+theImage.getWidth());
            }
        }
}

System.out.println を使用して、カメラからキャプチャしたビットマップ解像度をトレースしました。204x153しかないことを示しています。元の解像度は 3264x2448 である必要があります。

誰でもこれを解決する方法を知っていますか?? どうもありがとう。

4

3 に答える 3

2

の公式ドキュメントからACTION_IMAGE_CAPTURE

呼び出し元は、このイメージが書き込まれる場所を制御するために、追加のEXTRA_OUTPUTを渡すことができます。EXTRA_OUTPUTが存在しない場合、小さいサイズの画像が追加フィールドのビットマップオブジェクトとして返されます。これは、小さな画像のみが必要なアプリケーションに役立ちます。EXTRA_OUTPUTが存在する場合、フルサイズの画像はEXTRA_OUTPUTのURI値に書き込まれます。

于 2012-10-17T12:15:21.643 に答える
0

imageview のスケール タイプを center または centerInside に設定してみてください。

于 2012-10-17T10:52:10.207 に答える