调整相机捕获的图像,无需裁剪

时间:2016-08-18 04:55:33

标签: android

如果我想将捕获的图像调整到固定的高度和宽度(例如:2000px * 3000px),我该怎么办?我不想使用crop.I只想将图像保存在具有固定高度和宽度的服务器中。

这是我的代码:

 if (resultCode == RESULT_OK && requestCode ==  REQ_CAMERA_IMAGE) {

            Bitmap photo = (Bitmap) data.getExtras().get("data");
           /* int newWidth=(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 622, getResources().getDisplayMetrics());
            int newHeight=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 150, getResources().getDisplayMetrics());
            Bitmap resized = Bitmap.createScaledBitmap(photo, newWidth, newHeight, true);*/
            resultIv.setImageBitmap(photo);
            // CALL THIS METHOD TO GET THE URI FROM THE BITMAP
            Uri tempUri = getImageUri(getApplicationContext(), photo);
            // CALL THIS METHOD TO GET THE ACTUAL PATH
            File finalFile = new File(getRealPathFromURI(tempUri));

            int x=(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 177, getResources().getDisplayMetrics());
            int y=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 273, getResources().getDisplayMetrics());
            cropView.of(Uri.fromFile(finalFile)).withAspect(x,y).initialize(ImageType.this);
        }


        public Uri getImageUri(Context inContext, Bitmap inImage) {
       /* ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
        String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
        return Uri.parse(path);*/
        int newWidth=(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, 75, getResources().getDisplayMetrics());
        int newHeight=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, 114, getResources().getDisplayMetrics());
        Bitmap resized = Bitmap.createScaledBitmap(inImage, newWidth,newHeight, false);

     //   Bitmap resized = Bitmap.createScaledBitmap(inImage, newWidth, newHeight, true);
     //   Bitmap resized = Bitmap.createScaledBitmap(inImage,(int)(inImage.getWidth()*0.9), (int)(inImage.getHeight()*0.9), true);
        String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), resized, "Title", null);
        return Uri.parse(path);
    }

我已经考虑过我尝试过的代码。它没有按照我的意愿提供输出。

2 个答案:

答案 0 :(得分:0)

使用下面的代码,您可以设置图像的最大/最小高度和宽度,但如果不想旋转,则设置图像旋转的可选度为0,如果不想旋转。

public static bitmap resizeBitmap(Bitmap bitmap){
        int width = 2000; // - Dimension in pixels
        int height= 2000;  // - Dimension in pixels
        return Bitmap.createScaledBitmap(bitmap, width, height, false);
    }

答案 1 :(得分:0)

调整位图大小

{"status":"UP"}