如何提高质量的位图? [英] How to increase Bitmap quality?

查看:142
本文介绍了如何提高质量的位图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我工作的应用程序,一个按钮打开相机。当你拍摄一张照片,该照片被装入应用程序为位图。这些照片是非常像素化。我怎样才能提高位图的质量已经加载到我的应用程序后?

code迄今:

 私有静态最终诠释CAMERA_PIC_REQUEST = 2500;
@覆盖
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);    按钮捕捉=(按钮)findViewById(R.id.captureButton);
    按钮翻转=(按钮)findViewById(R.id.flipButton);
    最后的TextView文本=(TextView的)findViewById(R.id.text);
    capture.setOnClickListener(新View.OnClickListener(){        公共无效的onClick(视图v){
            意图cameraIntent =新意图(android.provider.MediaStore.ACTION_IM​​AGE_CAPTURE);
            text.setVisibility(View.GONE);
            startActivityForResult(cameraIntent,CAMERA_PIC_REQUEST);
        }
    });
    flip.setOnClickListener(新View.OnClickListener(){        公共无效的onClick(视图v){
        }
    });
}保护无效的onActivityResult(INT申请code,INT结果code,意图数据){
    如果(要求code == CAMERA_PIC_REQUEST){
        。位图图像=(位图)data.getExtras()获得(数据);
        ImageView的ImageView的=(ImageView的)findViewById(R.id.ImageView01);
        imageView.setImageBitmap(图片);
    }
  }
}


解决方案

不要从数据的形象,它始终是一个低质量的图像。尝试使用文件的路径和文件路径获取图像。

打开摄像机

 意向意图=新意图(android.media.action.IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,1);
intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(路径));
startActivityForResult(意向,CAMERA_PIC_REQUEST);

和当您返回到的onActivityResult图像将被存储到您定义的路径。你可以从那里得到的高分辨率图像。或者,你也可以使用一个函数来获取最后拍摄的图像...

 私人字符串getLastImagePath(){
        最终的String [] = imageColumns {MediaStore.Images.Media._ID,
                MediaStore.Images.Media.DATA};
        最后弦乐imageOrderBy = MediaStore.Images.Media._ID +DESC;
        光标imageCursor = managedQuery(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,imageColumns,
                NULL,NULL,imageOrderBy);
        如果(imageCursor.moveToFirst()){
            INT ID = imageCursor.getInt(imageCursor
                    .getColumnIndex(MediaStore.Images.Media._ID));
            字符串FULLPATH = imageCursor.getString(imageCursor
                    .getColumnIndex(MediaStore.Images.Media.DATA));
            返回完整路径;
        }其他{
            返回;
        }
    }

此函数将返回你最后拍摄的图像路径​​。

In the app I'm working on, a button opens the camera. When you take a picture, that picture is loaded into the app as a Bitmap. The pictures are very pixelated. How can I increase the quality of the bitmap after it has been loaded into my app?

Code so far:

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

解决方案

Do not get that image from data, it is always a low quality image. Try using a file path and get the image from file path.

Open Camera

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

And when you return to onActivityResult the image will be stored to your defined path. You can get the high resolution image from there. Or you can also use a function to get last captured image ...

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

This function will return you the last captured image path.

这篇关于如何提高质量的位图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆