2017-12-13 17 views
0

받기 자른 이미지 uri. 문제는 활동에 uri가 반환되지 않는다는 것입니다.내가 구현 이미지 아래처럼 안드로이드 의도를 사용하여 내 응용 프로그램에서 자르기를 출력 자른 이미지 URI

여기 내 작물 이미지 의도 조각입니다 :

galleryFAB.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Log.d(TAG, "Gallery Btn Clicked"); 
      selectFromGallery(); 
     } 
    }); 

private void selectFromGallery() { 

    galleryIntent = new Intent(Intent.ACTION_GET_CONTENT); 
    galleryIntent.setType("image/*"); 
    startActivityForResult(Intent.createChooser(galleryIntent, "Choose From"), 2); 
} 

활동 결과 방법에 내 코드 :

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    InputStream inputStream; 

    if (requestCode == 2 && resultCode == RESULT_OK){ 
     if (data != null){ 
      cropImageUri = data.getData(); 
      userImage.setImageURI(cropImageUri); 
      try { 
       originalBitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), cropImageUri); 

       inputStream = getContentResolver().openInputStream(data.getData()); 
       originalBitmap = BitmapFactory.decodeStream(inputStream); 

       Log.d(TAG, "Original bitmap byte count is:\t" + originalBitmap.getByteCount()); 

       resizedBitmap = getResizedBitmap(originalBitmap, 200); 

       ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
       resizedBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); 

       Log.d(TAG, "Resized bitmap byte count is:\t" + resizedBitmap.getByteCount()); 

       try { 
        File file = saveBitmap("avatar_image"); 
        upLoadFile(file); 
       } catch (IOException ex) { 
        ex.printStackTrace(); 
       } 


       byte[] bytes = stream.toByteArray(); 

       /** 
       * For Shared Preferences 
       * **/ 

       encodedImage = Base64.encodeToString(bytes, Base64.DEFAULT); 

       imagePrefs = getSharedPreferences("ImagePrefs", Context.MODE_PRIVATE); 
       SharedPreferences.Editor editor = imagePrefs.edit(); 
       editor.putString("image_user", encodedImage).commit(); 

       upLoadBytes(bytes); 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      cropImage(); 
     } 

    } else if (requestCode == PERM_CODE){ 
     if (data != null){ 

      //I want to get the cropped image uri here but unable to. Have tried converting the bitmap rcvd here to uri but in activity, ntn is returned. kindly guide me 

      Bundle bundle = data.getExtras(); 
      originalBitmap = bundle.getParcelable("data"); 
      userImage.setImageBitmap(resizedBitmap); 
     } 

    } 

} 

내 이미지 자르기 기능 :

private void cropImage() { 
    try { 
     CropIntent = new Intent("com.android.camera.action.CROP"); 

     CropIntent.setDataAndType(cropImageUri, "image/*"); 
     CropIntent.putExtra("crop", true); 
     CropIntent.putExtra("outputX", 200); 
     CropIntent.putExtra("outputY", 200); 
     CropIntent.putExtra("aspectX", 1); 
     CropIntent.putExtra("aspectY", 1); 
     CropIntent.putExtra("scale", true); 
     CropIntent.putExtra("return-data", true); 

     startActivityForResult(CropIntent, PERM_CODE); 


    } catch (ActivityNotFoundException ex){ 

    } 
} 

사람이 얻는 방법을 말할 수 출력 uri? 감사.

+0

Android에는 'CROP''의도 '가 없습니다. 많은 [안드로이드에서 사용할 수있는 이미지 자르기 라이브러리] (https://android-arsenal.com/tag/45)가 있습니다. 하나를 사용하십시오. – CommonsWare

답변

0

자른 이미지가 ImageView에 표시되는 경우 this link을 따라 장치 저장 장치에 저장하면 파일을 업로드 할 수 있습니다.