如何在imageview中显示图像的原始大小

时间:2013-03-17 19:26:00

标签: android camera imageview

我正在创建一个应用程序,您可以点击按钮拍照,然后在拍照后我想在图像视图中显示它。

我使用此代码:

@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部分     

但它显示图像裁剪和丑陋(不是原始尺寸)

如何让它在imageview中显示照片的原始尺寸?

1 个答案:

答案 0 :(得分:0)

Intent extra中返回的图像数据是捕获图像的缩小版本,适用于缩略图。完整大小的图像将写入您在请求中作为EXTRA_OUTPUT Uri传递的文件位置。如果你想使用完整的图像本身,你需要看看那里。

请注意,Android只保证其中一个,因此您传递EXTRA_OUTPUT位置,同时查找“数据”字段中返回的结果这一事实将无法在所有设备上运行......这不是框架所保证的(docs for more info)。在给出时,您应该只希望从请求中显示的Uri中读取文件。如果没有在那里写入图像,那是因为相机应用程序无法访问您提供的Uri位置,它必须是到公共位置的有效路径(如外部存储,而不是应用程序专用内部存储)。