마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

레이아웃을 bitmap으로 만들어 이미지로 저장 관련하여 문의드립니다.

0 추천

현재 구조가 아래와 같습니다.

<리니어레이아웃>

<저장버튼>

<프레임레이아웃>
<이미지뷰><이미지뷰>
</프레임레이아웃>

</리니어레이아웃>

여기서 저장 버튼을통해 프레임 레이아웃과 자식 뷰들을 이미지로 만드려고 합니다. 
현재 갤러리의 사진을 이미지뷰에 각각 셋팅하였고 "저장" 버튼을 통해 하나의 이미지로 만들려고하는데. 
프레임레이아웃을 비트맵으로 저장하니 갤러리에서 불러온 사진들은 나타나지 않습니다.. 
혹시 왜 그런지 알 수 있을까요?ㅠㅠ 

 

저장버튼 누를시 동작

public void 저장버튼클릭(View v) {

                프레임레이아웃.setDrawingCacheEnabled(true);

프레임레이아웃.buildDrawingCache();

//이미지 캡쳐

Bitmap saveBitmap = 프레임레이아웃.getDrawingCache();

SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd_hhmmss");

String namePostfix = format.format(new Date());

//sd_card 절대경로를 구함.

String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath();

String basePath = sdPath+File.separator+APP_BASE+File.separator;

File dir = new File(basePath);

if(!dir.exists()) {

dir.mkdirs();

}

 

File saveFile = new File(basePath+File.seperator+"foru_"+namePostfix+".jpg");

FileOutputStream output = null;

 

try {

output = new FileOutputStream(saveFile);

saveBitmap.compress(CompressFormat.JPEG, 70, output);

Toast.makeText(getApplicationContext(), "저장되었습니다.", Toast.LENGTH_SHORT).show();

 

catch(IOException e) {

Toast.makeText(getApplicationContext(), "저장 실패", Toast.LENGTH_SHORT).show();

finally {

if(output!=null) { try{output.close();}catch(Exception e){e.printStackTrace();}}

}

}

겸몽이 (130 포인트) 님이 2015년 2월 25일 질문

2개의 답변

+2 추천

File saveFile = new File(basePath+File.seperator+"foru_"+namePostfix+".jpg");

=>

File saveFile = new File(basePath+File.separator+"foru_"+namePostfix+".jpg");

오타임돠..

메니페스트에

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

주었는지 확인하시공

세상밖으로 (330 포인트) 님이 2015년 2월 25일 답변
0 추천

저장된 이미지가 갤러리에 바로 보이지 않는다면..

MediaScanner를 구현해주어야 합니다.

민석옹 (200 포인트) 님이 2015년 2월 27일 답변
...