약봉투를 사진찍어서 서버로 전달하려고 한다. 그러면 사진을 찍어야하는데 생각보다 난관이었다.
3일전부터 안드로이드 스튜디오 디벨로퍼를 찾아가면서 카메라 촬영을 구현했지만 해상도가 너무 낮은 문제가 있었다.
디벨로퍼에서 제안한 방식은 사진을 파일로 만들어 그 경로를 가져와 원본의 이미지를 보여주는것인데,
예제를 봐도 해결하지 못했다.
startActivityForResult를 통해 Intent를 보내는데, onActivityResult 측에서는 Intent를 NULL으로 받는것이다.
putExtra는 딕셔너리구조,, 따라서 getIntent()를 하여 value를 받으라는데 잘 안되서 구글링을 좀 한 결과
스택오버플로우에서 코드를 찾을수 있었다 !!!
https://stackoverflow.com/questions/9890757/android-camera-data-intent-returns-null
Android Camera : data intent returns null
I have an android application which contains multiple activities. In one of them I'm using a button which will call the device camera : public void onClick(View view) { Intent photoIntent = ...
stackoverflow.com
private Uri imageUri;
private ImageView myImageView;
private Bitmap thumbnail;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
...
...
myImageview = (ImageView) findViewById(R.id.pic);
values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, "MyPicture");
values.put(MediaStore.Images.Media.DESCRIPTION, "Photo taken on " + System.currentTimeMillis());
imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, PICTURE_RESULT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_TAKE_PHOTO && resultCode == RESULT_OK) {
Bitmap bitmap;
try {
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
myImageView.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
이제 해상도 저하없는 촬영이 가능해졌다!!!
하지만 정방향으로 찍어도 사진 비율의 문제인지 270도 회전을 하는데 이는 다음에 해결해야겠다.
'Android' 카테고리의 다른 글
처방전 약품명 OCR 과정 (0) | 2023.05.12 |
---|