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

다시한번 올립니다!스크린 캡처 후 SQlite 이미지 저장

0 추천

스크린 캡처 후  SQlite 이미지 저장 한 다음에 decodefactory로 출력하려 합니다

웹뷰의 스크린 샷 캡처->비트맵으로 받아->바이트로 변환->sqlite blob으로 저장->저장확인후 리스뷰에 출력

하려고 하는데 에러가 납니다 SkImageDecoder::Factory returend null

초록색 글씨는 제가 sqlite에 잘 저장되어있나 확인 한 겁니다 저장후 로그켓에 출력은 잘 되는데 Factory가 널을 반환하는 이유를 모르겠어여......

 

 

 

 

코드는는

webView1.setDrawingCacheEnabled(true);

Bitmap screenshot = webView1.getDrawingCache();

비트맴 저장후후

ByteArrayOutputStream stream = new ByteArrayOutputStream() ; 

screenshot.compress( CompressFormat.PNG, 100, stream) ;  

byte[] byteArray = stream.toByteArray() ;

바이트로 변환해 줍니다 그리고 나서서

cs.moveToFirst();

cs.moveToPosition(position);

Bitmap bitmap = BitmapFactory.decodeByteArray( cs.getBlob(1), 0, cs.getBlob(1).length ) ; 

ImageView img = (ImageView) convertView.findViewById(R.id.filelist_img);

img.setImageBitmap(bitmap);

 

커스텀 리스트뷰의 이미지뷰에 뿌려주려고 하니깐 널이 반환됩니다 

BitmapFactory.decodeByteArray( cs.getBlob(1), 0, cs.getBlob(1).length ) ; 여기서 에러가 나는것 같은데 이유를 모르겠네요

인터넷 찾아보니깐 기기마다 다르다고 하는데 다른 기계에서도 해봤는데 안되구요 어떻게 해야될지 모르겟네용 도와주세요ㅜㅜㅜㅜ

나는안드로오 (960 포인트) 님이 2014년 8월 21일 질문

1개의 답변

+1 추천
 
채택된 답변
  1. 캡쳐된 비트맵이 원하는대로 생성이 되었는지 확인하세요 (view 에 bitmap 을 먼저 할당해보면 알수 있겠죠)
  2. 해당 데이터가 blob 로 제대로 insert 되었는지 확인하세요 (log 출력해보면 문자열이 나오면 되겠죠)
  3. 1, 2 가 증명되었다면 문제 없이 출력 될 겁니다. 

 

aucd29 (218,390 포인트) 님이 2014년 8월 21일 답변
나는안드로오님이 2014년 8월 21일 채택됨
새로 액티비티 만들어서 해봤는데요 스크린샵 캡쳐해서 비트맵은 잘 받아오구요
blob도 제대로 insert됬어요  근데 왜 안되죠 ㅜㅜㅜㅜ
08-21 12:40:39.114: D/skia(25681): --- SkImageDecoder::Factory returned null
이 에러가 자꾸 뜨네요 ㅜㅜㅜㅜㅜㅜ
마지막으로 여쭤 볼께요!sqlite 로그캣에 보면 저는[B@41a9f6e8 이런식으로 마지막 괄호가 빠져있는데
괄호가 들어가야 정상적으로 입력된건가요???
자세한 상황을 모르니 확답을 드리기가 어렵네요
byte 를 직접 trace 하기 보다는 length 를 봐보세요
...