2017-01-16 3 views
0

의도를 사용하여 이미지를 클릭하고 Android 카메라를 실행할 때 발생하는 문제가 있습니다. 의도 데이터은 크기가 조정 된 비트 맵 이미지의 정보를 전달합니다. 어쩌면 내가 잘못 이해 한 것일 수도 있지만, 그것을 바로 잡기 위해 무엇을 할 수 있는지 제안하십시오. 이미지 뷰 내가 클릭 같은 이미지를 표시하지만 아주 여기비트 맵 이미지 크기 조정

하나는 기본 코드입니다 blurrred : 당신이 카메라에 URI를 전달하고 그것에서 이미지를 얻을해야

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
InputStream stream= null; 
     super.onActivityResult(requestCode, resultCode, data); 
     if(this.requestCode == requestCode && resultCode == RESULT_OK){ 
      try{ 
       //stream= getContentResolver().openInputStream(data.getData()); 
       Bundle extras= data.getExtras(); 
       Bitmap bitmap = (Bitmap) extras.get("data"); 
       imageHolder.setImageBitmap(bitmap); 
      } 
      catch (Exception ex){ 
       ex.printStackTrace(); 
      } 
     } 
    } 
어쩌면
+0

사용 bitmap.createScaledBitmap(); –

+0

비트 맵 대신 uri를 사용하지 않는 이유는 무엇입니까? –

답변

0
 try{ 
      //stream= getContentResolver().openInputStream(data.getData()); 
      Bundle extras= data.getExtras(); 
      Bitmap bitmap = (Bitmap) extras.get("data"); 
      //set value Width=200, Height=200 
      Bitmap resizedimg = Bitmap.createScaledBitmap(bitmap, Width, Height, true); 

      imageHolder.setImageBitmap(resizedimg); 
     } 
     catch (Exception ex){ 
      ex.printStackTrace(); 
     } 
+0

bitmap.createScaledBitmap을 사용한 후에도 이미지가 흐리게 보입니다. –

0

때 ActivityResult를 대신 비트 맵의 ​​

0

이 시도 :

public class MainActivity extends Activity { 

    static int CAMERA_TAKE_PIC =1; 
    Uri outPutfileUri; 
    ImageView mImageView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mImageView = (ImageView) findViewById(R.id.image); 
    } 


    public void CameraClick(View v) { 

     Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     File file = new File(Environment.getExternalStorageDirectory(), 
       "Photo.jpg"); 
     outPutfileUri = Uri.fromFile(file); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutfileUri); 
     startActivityForResult(intent, CAMERA_TAKE_PIC); 
    } 

    Bitmap bitmap = null; 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode,Intent data) 
    { 
     if (requestCode == CAMERA_TAKE_PIC && resultCode==RESULT_OK) { 

      String uri = outPutfileUri.toString(); 
      Log.e("uri-:", uri); 
      Toast.makeText(this, outPutfileUri.toString(),Toast.LENGTH_LONG).show(); 

      //Bitmap myBitmap = BitmapFactory.decodeFile(uri); 
      // mImageView.setImageURI(Uri.parse(uri)); OR drawable make image strechable so try bleow also 

      try { 
       bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), outPutfileUri); 
       Drawable d = new BitmapDrawable(getResources(), bitmap); 
       mImageView.setImageDrawable(d); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 


     } 
} 

} 

나는 이미지 때문에 흐리게 생각 인 텐트 데이터에는 이미지의 thumbnail 만 포함됩니다. 내부/외부 스토리지에 이미지를 저장 한 다음 획득 할 수 있습니다.

0

의도 데이터에 이미지의 축소판 만 포함되어있어 이미지가 흐리게 보일 수 있습니다. 당신은 내부/외부 스토리지에 이미지를 저장 한 다음 그것을 취득해야합니다. 또한 귀하의 질문은 어떻게 카메라에서 전체 크기의 이미지를 얻을 수 있어야합니다. 이 문서 https://developer.android.com/training/camera/photobasics.html을 살펴보십시오.

이은에 refrence이 링크에서 찾을 수

Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
File dir= 
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); 

output=new File(dir, "CameraContentDemo.jpeg"); 
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output)); 

startActivityForResult(i, CONTENT_REQUEST); 

을 수 수행해야하는 방법이다.

https://stackoverflow.com/a/32121829/3111083