2

我正在制作一个应用程序,您可以在其中单击按钮并拍照,然后在拍照后我想在图像视图中显示它。

我为此使用此代码:

@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中显示照片的原始大小?

4

1 回答 1

0

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

请记住,Android 只保证一个或另一个,因此您传递一个EXTRA_OUTPUT位置,但也在“数据”字段中查找返回的结果这一事实不适用于所有设备......这不是框架向您保证(有关更多信息的文档)。你应该只期望从你在请求中提供的 Uri 中读取文件。如果图像没有写入那里,那是因为相机应用程序无法访问您提供的 Uri 位置,它必须是公共位置的有效路径(如外部存储,而不是应用程序私有内部存储)。

于 2013-03-17T19:43:27.707 回答