사용자가 사진을 찍을 수있는 사진을 만들고 그 사진을 이미지 뷰에 저장하려고합니다. 나는 이것을 작동시키기 위해 수십 가지 방법을 시도했다.Android : 카메라로 사진을 찍고 전체 해상도 이미지를 imagview에 저장하려면 어떻게해야합니까?
내가 본 많은 답변들은 MediaStore 인 텐트를 사용하고 ACTION_CAMERA_CAPTURE를 전달할 때 data.getExtra ("data")를 사용하는 것이 좋습니다. 이렇게하면 더 작은 이미지가 반환되고 표시하려는 이미지가 커지므로이 방법을 사용하면 이미지가 흐리게 표시됩니다.
다른 옵션은이 동일한 방법을 사용하고 EXTRA_OUTPUT을 전달하는 것입니다. 그러나 이것은 저장 위치를 넣어야하고 내가 본 모든 대답은 Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_PICTURES)를 넣으라고 알려줍니다. 그러나 onActivityResult에서 data.getData()를 수행하려고하면 null이 발생합니다. 어떻게해야합니까?
alert.setPositiveButton("Take Photo", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
profileFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "image_" +
String.valueOf(System.currentTimeMillis()) + ".jpg");
profile = Uri.fromFile(profileFile);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, profile);
startActivityForResult(intent, 1);
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK) {
ImageView imageView = (ImageView) findViewById(R.id.ProfileImage);
//This returns null.
//I am guessing that the Environment.getExternalSt...() method is getting a storage
//location that does not exist.
//I don't know what the correct storage location is and I have not
//been able to find it.
Uri u = data.getData();
File finalFile = new File(getRealPathFromURI(u));
Picasso.with(this).load(finalFile).into(imageView);
}
}
EXTRA_OUTPUT이 반환되지 않는다는 것은 무엇을 의미합니까? 이것이 틀렸다면 의도 데이터를 어떻게 얻을 수 있습니까? 또한 휴대 전화의 저장 위치를 찾았지만 찾지 못했습니다. 내 컴퓨터에서 내 휴대 전화 저장소를보고 찾았습니다. 이것은 [link] (http://i.imgur.com/MgAYa9U.png) 위치입니다 (도움이 될지 모르겠 음). 대신 갤러리 위치에 저장할 수있는 방법을 알고 있습니까? [link] (http://i.imgur.com/GhdIWB8.png) – kindOfABigDeal
실제로 얻으려는 폴더가 잘못되었습니다. 그것은 나에게이 위치/저장/에뮬레이션/0/Pictures/존재하지 않는 것을 제공합니다. 마지막 이미지에 그림 디렉토리가 있어야합니다. – kindOfABigDeal
@kindOfABigDeal : "EXTRA_OUTPUT이 반환되지 않는다는 것은 무엇을 의미합니까?" - 당신이 'EXTRA_OUTPUT'에 넣은 값을 유지해야한다는 뜻입니다. 그 가치는'Intent' 결과에서 여러분에게 돌아 오지 않습니다."실제로 얻으려고하는 폴더가 잘못되었습니다."- [외부 저장소]에 대한 올바른 위치입니다 (https://commonsware.com/blog/2014/04/08/storage-situation-external- storage.html). – CommonsWare