android - 如何提高位图质量?

标签 android bitmap

在我正在开发的应用程序中,有一个按钮可以打开相机。当您拍照时,该照片将作为位图加载到应用程序中。图片非常像素化。将位图加载到我的应用程序后,如何提高位图的质量?

到目前为止的代码:

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

最佳答案

不要从数据中获取该图像,它始终是低质量图像。尝试使用文件路径并从文件路径获取图像。

打开相机

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 "";
        }
    }

此函数将返回上次捕获的图像路径。

关于android - 如何提高位图质量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10958626/

相关文章:

java - 如何从 Activity 中调用 fragment 内的方法?

android - 在 Android 上不缩放绘制位图

Android RemoteViews : setImageViewResource() vs setImageViewUri() vs setImageViewBitmap()

android - Java BufferedImage/Android 位图

android - 如何将 ListView 适配器中的项目绑定(bind)到服务?

android - addview LinearLayout顺序问题

android - LocationSettings 对话框出现,即使 GPS 打开

java - LibGDX - 自定义点击监听器?

c++ - 将位图图像加载到 WINApi C++ 中并显示

安卓开发 : Bitmap and rectangles?