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 回答