1

私が取り組んでいるアプリでは、ボタンでカメラが開きます。写真を撮ると、その写真がビットマップとしてアプリに読み込まれます。写真は非常にピクセル化されています。アプリに読み込まれたビットマップの品質を向上させるにはどうすればよいですか?

これまでのコード:

private static final int CAMERA_PIC_REQUEST = 2500;




@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);



    Button capture = (Button) findViewById(R.id.captureButton);
    Button flip = (Button) findViewById(R.id.flipButton);
    final TextView text = (TextView) findViewById(R.id.text);


    capture.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            text.setVisibility(View.GONE);
            startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
        }
    }); 


    flip.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {




        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data){
    if(requestCode == CAMERA_PIC_REQUEST){
        Bitmap image = (Bitmap) data.getExtras().get("data");
        ImageView imageView = (ImageView) findViewById(R.id.ImageView01);
        imageView.setImageBitmap(image);
    }
  }
}  
4

1 に答える 1

3

その画像をデータから取得しないでください。常に低品質の画像です。ファイル パスを使用して、ファイル パスから画像を取得してみてください。

オープンカメラ

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(path));
startActivityForResult(intent, CAMERA_PIC_REQUEST);

onActivityResult に戻ると、画像は定義したパスに保存されます。そこから高解像度の画像を取得できます。または、関数を使用して最後にキャプチャされた画像を取得することもできます...

    private String getLastImagePath() {
        final String[] imageColumns = { MediaStore.Images.Media._ID,
                MediaStore.Images.Media.DATA };
        final String imageOrderBy = MediaStore.Images.Media._ID + " DESC";
        Cursor imageCursor = managedQuery(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns,
                null, null, imageOrderBy);
        if (imageCursor.moveToFirst()) {
            int id = imageCursor.getInt(imageCursor
                    .getColumnIndex(MediaStore.Images.Media._ID));
            String fullPath = imageCursor.getString(imageCursor
                    .getColumnIndex(MediaStore.Images.Media.DATA));
            return fullPath;
        } else {
            return "";
        }
    }

この関数は、最後にキャプチャされた画像パスを返します。

于 2012-06-09T06:03:46.593 に答える