2016-08-18 75 views
-1

如果我想將捕獲的圖像調整爲固定的高度和寬度(例如:2000px * 3000px),我該怎麼做?我不想使用裁剪。我只想將圖像保存在具有固定高度和寬度的服務器中。調整相機捕捉的圖像而不裁剪

這是我的代碼:

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

我已經commeneted,我有tried.It沒有給輸出,因爲我想要的代碼。

+0

你嘗試什麼嗎? –

+0

@Sohail Zahid是的,我用我的代碼編輯了這個問題。 – Amshu

回答

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

我用我的代碼更新了我所嘗試過的問題。請檢查一下。 – Amshu

+0

當我檢查與此,我越來越518 * 800像素 – Amshu

+0

公共Uri getImageUri(上下文inContext,位圖inImage){寬度= 2000; // - 像素尺寸 int height = 2000; // - 以像素爲單位的尺寸 位圖resizedBitmap = Bitmap.createScaledBitmap(inImage,width,height,false); String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(),resizedBitmap,「Title」,null); return Uri.parse(path); } – Amshu

0

調整位圖

int width = 120; 
int height= 120; 
Bitmap resizedBitmap = Bitmap.createScaledBitmap(myBitmap, width, height, false); 
+0

如果您不想裁剪'cropView.of(Uri.fromFile(finalFile)),您正在裁剪原因。 withAspect(x,y).initialize(ImageType.this);' –

+0

我想以這種方式裁剪用戶在裁剪時無權調整大小。因此,我使用進行裁剪固定的高度和寬度。裁剪後,我將圖像保存在服務器中。 – Amshu

+0

代碼中沒有條件來檢查天氣用戶是否調整了權限,或者不知道如何確定。 –