Android 当我从相机上拍摄图像时,它会失去图像的质量吗?怎么办?

Android 当我从相机上拍摄图像时,它会失去图像的质量吗?怎么办?,android,camera,imageview,Android,Camera,Imageview,我单击图像的代码是: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 300); 活动结果代码: if (requestCode == 300) { Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); ByteArrayOutputStream bytes = new ByteArr

我单击图像的代码是:

 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
 startActivityForResult(intent, 300);
活动结果代码:

if (requestCode == 300) { 
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, bytes);

    File destination = new File(Environment.getExternalStorageDirectory(),
            System.currentTimeMillis() + ".jpg");

    FileOutputStream fo;
    try {
        destination.createNewFile();
        fo = new FileOutputStream(destination);
        fo.write(bytes.toByteArray());
        fo.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    if(number.equalsIgnoreCase("1"))
    {
        imageViewOneNumber.setImageBitmap(thumbnail);
            image1="";
            image1= getEncoded64ImageStringFromBitmap(thumbnail);
    }
    else
    {
        RelativeLayoutImage2.setVisibility(View.GONE);
        FrameImage2.setVisibility(View.VISIBLE);
        imageViewTwoNumber.setImageBitmap(thumbnail);
        image2="";
        image2= getEncoded64ImageStringFromBitmap(thumbnail);
    }
}
摄像头捕获演示的图像:

请帮我解决这个问题。当我点击相机上的照片时,它会减小图像的大小

Android摄像头应用程序会保存一张全尺寸的照片,如果你给它的话 要保存到的文件。您必须提供完全限定的文件名 相机应用程序应保存照片的位置

这里的示例代码

  File photoFile = null;
        try {
            photoFile = createImageFile();
        } catch (IOException ex) {
            // Error occurred while creating the File
            ...
        }
        // Continue only if the File was successfully created
        if (photoFile != null) {
            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                    Uri.fromFile(photoFile));
            startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
        }

String mCurrentPhotoPath;

private File createImageFile() throws IOException {
    // Create an image file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    String imageFileName = "JPEG_" + timeStamp + "_";
    File storageDir = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES);
    File image = File.createTempFile(
        imageFileName,  /* prefix */
        ".jpg",         /* suffix */
        storageDir      /* directory */
    );

    // Save a file: path for use with ACTION_VIEW intents
    mCurrentPhotoPath = "file:" + image.getAbsolutePath();
    return image;
}

这样实施:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                File image = createImage(this);
                Uri uri = Uri.parse("file://" + image.getAbsolutePath());
                intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
                startActivityForResult(intent, CAMERA_REQUEST);

public File createImage(Context context) throws IOException {
        File dir = new File(Environment.getExternalStorageDirectory() + "/" + context.getString(R.string.company_name) + "/Images");
        if (!dir.exists()) {
            if (!dir.mkdirs()) {
                throw new IOException("Something wrong happened at" + dir);
            }
        }
        String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmmss", Locale.getDefault()).format(new Date());
        String imageName = context.getString(R.string.app_name) + "_" + timeStamp + ".jpg";
        return new File(dir.getPath() + File.separator + imageName);
    }
最后,在onActivityResult()中,您可以获得图像:

if (requestCode == CAMERA_REQUEST) {
            //Here you can load image by Uri
        }
启动意图

 Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File file = new File(Environment.getExternalStorageDirectory()+File.separator + "image.jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(intent, 300);
在onActivityResult(){..}

    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{  
    //Check that request code matches ours:
    if (requestCode == 300) 
    {
        //Get our saved file into a bitmap object:
       File file = new File(Environment.getExternalStorageDirectory()+File.separator + "image.jpg");
       Bitmap bitmap = decodeSampledBitmapFromFile(file.getAbsolutePath(), 1000, 700);
    }
}
以下是解码SampleDBitMapFromFile()的代码


使用此代码可能会对您有所帮助

Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    String path=Environment.getExternalStorageDirectory()+File.separator+Constants.APP_FOLDER_NAME+File.separator+Constants.ATTACHMENTS_FOLDER_NAME;
                    File mediapath=new File(path);
                    if(!mediapath.exists())
                    {
                        mediapath.mkdirs();
                    }
                    captured_image_uri=null;
                    captured_image_uri=Uri.fromFile(new File(mediapath.getPath(),"Image"+System.currentTimeMillis()+".jpg"));
                    intent.putExtra(MediaStore.EXTRA_OUTPUT,captured_image_uri);
                    startActivityForResult(intent, Constants.PICK_FILE_FROM_CAMERA);
onActivityResult编写以下代码

if(requestCode==Constants.PICK_FILE_FROM_CAMERA&&resultCode==getActivity().RESULT_OK)
            {
                try
                {
                    if(captured_image_uri!=null) {
                        ExifInterface exifInterface = new ExifInterface(captured_image_uri.getPath());
                        int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1);
                        Matrix matrix = new Matrix();
                        switch (orientation) {
                            case ExifInterface.ORIENTATION_ROTATE_90: {
                                matrix.postRotate(90);
                                break;
                            }
                            case ExifInterface.ORIENTATION_ROTATE_180: {
                                matrix.postRotate(180);
                                break;
                            }
                            case ExifInterface.ORIENTATION_ROTATE_270: {
                                matrix.postRotate(270);
                                break;
                            }
                        }
                        FileInputStream fis = new FileInputStream(captured_image_uri.getPath());
                        Bitmap bmp = BitmapFactory.decodeStream(fis);
                        Bitmap rotated = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
                        FileOutputStream fos = new FileOutputStream(captured_image_uri.getPath());
                        rotated.compress(Bitmap.CompressFormat.JPEG, 85, fos);
                        uploadFileToServer(captured_image_uri.getPath());
                    }
                }catch (Exception e)
                {

                               e.printStackTrace();
                }

            }

启动意图时,需要为要保存的图像设置路径。如果你不设置路径,API只返回一个缩略图版本,因此会出现模糊,我如何设置路径@ShubhankPerfact。。。得到输出@德文德拉
if(requestCode==Constants.PICK_FILE_FROM_CAMERA&&resultCode==getActivity().RESULT_OK)
            {
                try
                {
                    if(captured_image_uri!=null) {
                        ExifInterface exifInterface = new ExifInterface(captured_image_uri.getPath());
                        int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1);
                        Matrix matrix = new Matrix();
                        switch (orientation) {
                            case ExifInterface.ORIENTATION_ROTATE_90: {
                                matrix.postRotate(90);
                                break;
                            }
                            case ExifInterface.ORIENTATION_ROTATE_180: {
                                matrix.postRotate(180);
                                break;
                            }
                            case ExifInterface.ORIENTATION_ROTATE_270: {
                                matrix.postRotate(270);
                                break;
                            }
                        }
                        FileInputStream fis = new FileInputStream(captured_image_uri.getPath());
                        Bitmap bmp = BitmapFactory.decodeStream(fis);
                        Bitmap rotated = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
                        FileOutputStream fos = new FileOutputStream(captured_image_uri.getPath());
                        rotated.compress(Bitmap.CompressFormat.JPEG, 85, fos);
                        uploadFileToServer(captured_image_uri.getPath());
                    }
                }catch (Exception e)
                {

                               e.printStackTrace();
                }

            }