갤러리에서 이미지를 가져와서 이미지뷰에 넣을려고합니다.
그런데 폰에서 다운받거나 캡쳐한것들은 잘되는데 카메라로 직접 찍은 이미지들은 이미지뷰에 안들어가네요..
다른건다되는데 직접 찍은것들만 안들어갑니다. 차이점은 직접 찍은 것들이 해상도가 4000x2000정도로 큰 편인데 이것때문인지..
또 이상한건 직접찍은 사진을 선택했을때 이미지뷰에 안나타나지만 getDrawingCache같은 걸로 캡쳐를 해보면 그 사진에서는 사진이 보입니다; 이미지가 들어가긴하지만 안보이는것 같습니다.
왜이럴까여.. 소스는 이게 다입니다.
public class MainActivity extends AppCompatActivity {
ImageView iv;
RelativeLayout container;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView)findViewById(R.id.imageView3);
container = (RelativeLayout)findViewById(R.id.layout);
}
public void ccc(View v){
//갤러리
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE);
intent.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 1);
}
Bitmap photo;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
try {
photo = MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData());
iv.setImageBitmap(photo);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void click(View v){
String folder = "Test_Directory"; // 폴더 이름
try {
// 현재 날짜로 파일을 저장하기
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
// 년월일시분초
Date currentTime_1 = new Date();
String dateString = formatter.format(currentTime_1);
File sdCardPath = Environment.getExternalStorageDirectory();
File dirs = new File(Environment.getExternalStorageDirectory(), folder);
if (!dirs.exists()) { // 원하는 경로에 폴더가 있는지 확인
dirs.mkdirs(); // Test 폴더 생성
}
container.buildDrawingCache();
Bitmap captureView = container.getDrawingCache();
FileOutputStream fos;
String save;
try {
save = sdCardPath.getPath() + "/" + folder + "/" + dateString + ".jpg";
fos = new FileOutputStream(save);
captureView.compress(Bitmap.CompressFormat.JPEG, 100, fos); // 캡쳐
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + Environment.getExternalStorageDirectory())));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), dateString + ".jpg 저장",
Toast.LENGTH_LONG).show();
} catch (Exception e) {
}
};
}