안드로이드 개발 질문/답변
(글 수 45,052)
카메라로 찍은 이미지 용량이 이상해서 질문드립니다.
카메라로 사진을 찍으면 콜백함수가 호출 되잖아요?
제가 구현한 jpeg 콜백을 보여드리면
Camera.PictureCallback jpeg = new Camera.PictureCallback(){
public void onPictureTaken(byte[] data, Camera camera) {
FileOutputStream mFileOutputStream;
try {
mFileOutputStream = openFileOutput("temp_picture", MODE_WORLD_WRITEABLE);
mFileOutputStream.write(data);
mFileOutputStream.flush();
mFileOutputStream.close();
mFileOutputStream = openFileOutput("size_picture", MODE_WORLD_WRITEABLE);
String size = data.length+"";
mFileOutputStream.write(size.getBytes());
mFileOutputStream.flush();
mFileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
};
이렇게 넘어온 데이터를 이미지 데이터와 데이터길이를 파일에 저장하는데요.
jpeg 콜백으로 받아서 저장하면 이미지 크기가 250kb정도 나올줄 알았는데
막상 저장하고 용량을 보면 1MB가 넘더라구요.
제가 뭔가 잘못한건지ㅠㅠ
넘어올때 jpeg로 압축된 이미지 데이터가 아닌 bmp 이미지 데이터가 넘어오는게 아닌가해서요.
이거 안드로이드 내에서 이미지 용량을 압축하는게 있나요?
2010.02.18 23:53:54
그리고 이미지 사이즈 조정은 콜백으로 받아온 이미지를 메모리에 덤프해서 따로 작업을 해주셔야 될듯 합니다.
안드로이드는 처음이라 정확한 소스를 첨부해 드리지 못해서 ㅈㅅ합니다.
안드로이드는 처음이라 정확한 소스를 첨부해 드리지 못해서 ㅈㅅ합니다.
2010.02.22 03:22:48
이미지 크기를 줄이는방법인데요.
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 4; // 4분에 1 사이즈로 줄임
Bitmap myImage = BitmapFactory.decodeByteArray(data, 0,data.length,options);
이미지를 줄이기전 파일을 컴퓨터로 빼보았습니다.
1메가가 넘는 이미지였는데 그림판으로 열어 jpeg로 다시 저장하니 250kb정도로 줄어들더군요....
이미지사이즈를 줄여서 용량을 줄이기는 했지만 다른 해결방법을 찾아야 할 것 같습니다.
jepg로 넘어오는 코드는 맞는 것 같으나 어디에도 크기를 지정해주는 부분이 들어가있지 않은듯 합니다.
카메라에서 들어오는 그대로 포멧만 변경하는 것이라 파일이 큰듯 합니다. 이미지 용량을 압축하시는게 아니라
이미지 사이즈 자체를 줄이셔야 될것 같네요.