preview에서는 바로 data를 가져올수 없어 YuvImage로 bitmap을 만든뒤에 저장 해야 된다
이전 글에 카메라 소스가 있어 거기에 적용하면 쉽게 할 수 있다.
PreviewCallback mPreview = new PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
// TODO Auto-generated method stub
Camera.Parameters params = camera.getParameters();
int w = params.getPreviewSize().width;
int h = params.getPreviewSize().height;
int format = params.getPreviewFormat();
YuvImage image = new YuvImage(data, format, w, h, null);
ByteArrayOutputStream out = new ByteArrayOutputStream();
Rect area = new Rect(0, 0, w, h);
image.compressToJpeg(area, 50, out);
Bitmap bm = BitmapFactory.decodeByteArray(out.toByteArray(), 0, out.size());
Calendar calendar = Calendar.getInstance();
String FileName = String.format("SH%02d%02d%02d-%02d%02d%02d.jpg",
calendar.get(Calendar.YEAR) % 100, calendar.get(Calendar.MONTH)+1,
calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND));
String path = mRootPath + "/" + FileName;
SaveBitmapToFileCache(bm, path);
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.parse("file://" + path);
intent.setData(uri);
sendBroadcast(intent);
Toast.makeText(getApplicationContext(), "사진이 저장 되었습니다", 0).show();
camera.startPreview();
}
};
private void SaveBitmapToFileCache(Bitmap bitmap, String strFilePath) {
File fileCacheItem = new File(strFilePath);
OutputStream out = null;
try {
fileCacheItem.createNewFile();
out = new FileOutputStream(fileCacheItem);
bitmap.compress(CompressFormat.JPEG, 100, out);
}
catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
출처 : http://stackoverflow.com/questions/7794307/getting-image-from-surfaceview-to-imageview
'안드로이드' 카테고리의 다른 글
[android]간단한 쓰레드 사용법 (0) | 2013.02.28 |
---|---|
[android] bitmap 이미지 파일로 저장 (0) | 2013.02.28 |
[android] 간단한 카메라 소스(autoFocus 포함) (1) | 2013.02.28 |
[android] 화면 터치 이벤트 처리 (0) | 2013.02.27 |
[android]mac에서 android ndk 셋팅 방법 (0) | 2013.02.20 |