2016-12-22 5 views
1

여기에 코드를 게시합니다. 먼저 캡처 한 이미지를 로컬 디렉토리에 저장하고 디렉토리 및 자르기에서 가져옵니다. 그 이미지를 캡처하고 즉시 저장해야합니다. 캡처 된 이미지를 번들/의도 추가로 저장 한 다음 자르기 기능을 호출 할 수 있습니까?외부 또는 내부 저장 장치에 저장하지 않고 사진을 찍고 자르기가 가능합니까?

camera.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

       File file = new File(Environment.getExternalStorageDirectory()+File.separator + "img.jpg"); 

       intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); 

       startActivityForResult(intent, 1); 
      } 
     }); 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if(requestCode==1){ 

     File file = new File(Environment.getExternalStorageDirectory()+File.separator + "img.jpg"); 

     try { 

      cropCapturedImage(Uri.fromFile(file)); 
     } 
     catch(ActivityNotFoundException aNFE){ 

      String errorMessage = "Sorry - your device doesn't support the crop action!"; 
      Toast toast = Toast.makeText(getContext(), errorMessage, Toast.LENGTH_SHORT); 
      toast.show(); 
     } 
    } 
    if(requestCode==2){ 

     Bundle extras = data.getExtras(); 

     Bitmap thePic = extras.getParcelable("data"); 


     proofImage.setImageBitmap(thePic); 
    } 
} 

public void cropCapturedImage(Uri picUri){ 

    Intent cropIntent = new Intent("com.android.camera.action.CROP"); 

    cropIntent.setDataAndType(picUri, "image/*"); 

    cropIntent.putExtra("crop", "true"); 

    cropIntent.putExtra("aspectX", 1); 
    cropIntent.putExtra("aspectY", 1); 

    cropIntent.putExtra("outputX", 256); 
    cropIntent.putExtra("outputY", 256); 

    cropIntent.putExtra("return-data", true); 

    startActivityForResult(cropIntent, 2); 
} 
+3

[Android에는'CROP'' Intent']이 없습니다 (https://commonsware.com/blog/2013/01/23/no-android-does-not-have-crop-intent.html). 많은 [안드로이드에서 사용할 수있는 이미지 자르기 라이브러리] (https://android-arsenal.com/tag/45)가 있습니다. 하나를 사용하십시오. – CommonsWare

+0

자르기 라이브러리가 필요하지 않습니다. 나는 이미지를 저장하지 않고 자르고 싶다. 자른 후에 이미지를 저장하고 싶다. 어떤 생각? – BraveHeart

+0

"자르기 라이브러리가 필요하지 않습니다."- 이미지를 자르려면 자르기 라이브러리가 필요하거나 자르기 라이브러리를 직접 작성해야합니다. 수천 개의 장치 모델에 걸쳐 약 20 억 개의 안드로이드 장치가 있습니다. 누구도'com.android.camera.action.CROP'에 대한 지원을 할 필요가 없으며 메모리에서 자르기위한 몇 가지 방법을 지원해야하는 소수의 지원도 없습니다. – CommonsWare

답변

0

당신은 그것을 두 가지 작업을 수행 할 수 있습니다

  1. 카메라를 열고 사진을 찍고 당신은 URL에서 이미지 대신 URI를 선택할 수 있습니다 글라이드
  2. 를 사용하여 자르기 의도를 사용하고 (가치있는

    Glide.with (이) .load 글라이드 을 사용하여 자르 e) .crossFade() .thumbnail (0.5f) .diskCacheStrategy (DiskCacheStrategy.ALL) .into (callerimg);

당신은 원 모양을 .bitmapTransform (새 CircleTransform (이))를 사용할 수 있습니다. 여기서 CircleTransform은 이미지를 원으로 그리는 모양입니다.