2

ボタンをクリックして写真を撮ることができるアプリを作成しています。写真を撮った後、画像ビューで表示したいと思います。

私はそのためにこのコードを使用します:

@Override
public void onActivityCreated (Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);    

    Button b = (Button) getView().findViewById(R.id.button1);
    b.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {           
            try {
                Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
                cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
                startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
            } catch(ActivityNotFoundException e){
                Toast.makeText(getActivity(), "Your device does not have a camera", Toast.LENGTH_SHORT).show();
            }    
        }           
    }); 

    send = (Button) getView().findViewById(R.id.button2);
    send.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getActivity(), "Uploading image...", Toast.LENGTH_LONG).show();
            new uploadtoserver().execute();
        }           
    });
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAMERA_PIC_REQUEST) {
        if (data != null) {
            Bitmap thumbnail = (Bitmap) data.getExtras().get("data");               
            ImageView image = (ImageView) getView().findViewById(R.id.imageView1);  
            //image.setImageBitmap(thumbnail);  

            send.setVisibility(Button.VISIBLE);

            // CALL THIS METHOD TO GET THE URI FROM THE BITMAP
            Uri tempUri = getImageUri(getActivity(), thumbnail);
            // CALL THIS METHOD TO GET THE ACTUAL PATH
            finalFile = new File(getRealPathFromURI(tempUri));

            Bitmap bmImg = BitmapFactory.decodeFile(finalFile.toString());

            image.setImageBitmap(bmImg);

            System.out.println(finalFile);
        }
    }
}

これがimageviewのxml部分です

しかし、それはトリミングされた醜い画像を表示しています(元のサイズではありません)

イメージビューで写真の元のサイズを表示するにはどうすればよいですか?

4

1 に答える 1

0

エクストラで返される画像データはIntent、サムネイルに適した、キャプチャされた画像の縮小版です。フルサイズの画像はEXTRA_OUTPUT、リクエストでURIとして渡したファイルの場所に書き込まれます。完全な画像自体を操作したい場合は、そこを見る必要があります。

Androidはどちらか一方のみを保証するため、あるEXTRA_OUTPUT場所を通過するだけでなく、「データ」フィールドに返される結果を探すことも、すべてのデバイスで機能するわけではないことに注意してください...これはフレームワークではありませんあなたを保証します(詳細についてはドキュメント)。与えられた場合、リクエストで提示したURIからファイルを読み取ることだけを期待する必要があります。画像がそこに書き込まれていない場合は、カメラアプリが指定されたURIの場所にアクセスできないため、パブリックな場所への有効なパスである必要があります(アプリのプライベート内部ストレージではなく、外部ストレージなど)。

于 2013-03-17T19:43:27.707 に答える