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

WebView base64이미지 관련해서 질문드립니다 ㅠㅠ

0 추천


Handler mAfterDown = new Handler(){
                @Override
                public void handleMessage(Message msg){
                String html = (String)msg.obj;//다른 클래스에서 제가 원하는 사이트  코드를 String으로 변환하여 만든값입니다
                try{
                    int Ncpos01 = html.indexOf("tmpContentsArea");//String에서 이미지링크를 자를려고 범위를 압축시키기위해 범위를 지정하는 값입니다
                    int Ncpos02 = html.indexOf("boradReadFooter");//위와 동일
                    String tmp = "";//SubString값을 받기위한  임시변수값
                    tmp = html.substring(Ncpos01,Ncpos02);//위에 indexOf를 이용하여 범위를 압축시킵니다
                    TextView test = (TextView)findViewById(R.id.NoticeContent_title);
                     
                    String tmp2 = "";//이미지링크를 받기위한임시값
                    BufferedReader reader1 = new BufferedReader(new StringReader(tmp));
                    String StrLine2 = "";//압축시킨 tmp값을 한줄씩 검사하여  이미지링크와 동일한값을 비교하여 찾기위한 변수값
                    while((StrLine2 = reader1.readLine()) != null)
                    {
                        if(StrLine2.contains("http")){
                            StrLine2 = StrLine2.substring(StrLine2.indexOf("http"),StrLine2.indexOf("/p"));
                            tmp2 += StrLine2 + "\n";//이미지링크가 두개이상잇을시 자르기 위해 개행값을 넣어준다
                        }
                    }
                    reader1.close();
                     
                    tmp2 = tmp2.replace("\" /><","");//이미지링크값빼고 지우기위해 정리하는작업
                    String[] Content;
                    Content = tmp2.split("\n");// 이미지링크값 완료
                    //**********문제 ㅠㅠㅠ**************************
                    WebView img1 = (WebView)findViewById(R.id.NCweb01);
                    WebView img2 = (WebView)findViewById(R.id.NCweb02);
                    img1.setWebViewClient(new WebViewClient());
                    img1.getSettings().setJavaScriptEnabled(true);
                     
                    test.setText(Content[0]);//이미지링크값이 잘 됫는지 확인하기위한값
                    img1.loadUrl(Content[0]);
                    //if(Content[1]!=null)img2.loadUrl(Content[1]);
                    NcProgress.dismiss();
                     
                }
                catch(StringIndexOutOfBoundsException e){
                    Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                 
        }
};

안녕하세요 ㅠㅠ .. 안드로이드 초보개발자입니다 ..

제목질문과 같이 제가 동광고등학교라는 사이트에서 소스코드를 그대로 문자열로 가져와서 제가 원하는 이미지값만 추출하고 그 이미지를 웹뷰로 출력하고싶었는데요.. 그런데 실행을 하게되면

http://www.todayhumor.co.kr/board/view.php?table=databox&no=5605&s_no=5605&page=1

아래에 소스와같이 이미지파일이 보이지않습니다.. 그래서 원인을 찾아봤더니 b22n님이 아마 base64형식이어서 그럴것이다라고 해주셧는데 제가 이해를 잘하지못하여서 ㅠㅠ .. 재질문을 드리게되었습니다.. 그래서 일단 여러가지 맨땅에 헤딩으로 찾아보았는데요 일단

1. 크롬으로 제가 추출한 이미지링크는 잘 출력이됩니다
2. 일반 기본 웹브라우져나 웹뷰에서도 추출한값이아닌 홈페이지를 통해서 들어가면 잘보입니다
3. 제가 잘못추출한것일까하고 직접 타이핑해서 웹뷰나 기본웹브라우져로 들어가도 되지않습니다

이러한데 base64이미지라는게 암호화는 아니고 그 압축방식중에 하나인거같은데 ㅠㅠ 이걸 인코딩 디코딩하라시는것같기도하고.. base64유틸를 가져와서 객체지정해서 막 해보기도 햇는데 되지를 않네요 ㅠㅠㅠㅠ.. 제가 잘못알고잇는것같긴한데 구글에 검색해도 나오지가않아요 ㅠㅠ..그래서 크롬을 웹뷰로 적용시킬방법은 없나 검색을 해보았지만 그런것도 나오지않구요 ㅠㅠ.. 제가 영어실력은 안되서 외국사이트는 잘모르겟고 ㅠㅠ...
죄송하시지만 어찌해야할지 알려주셧으면 정말 감사하겠습니다..ㅠㅜㅜㅜ

 

코코아주스 (230 포인트) 님이 2013년 8월 8일 질문

1개의 답변

0 추천
String temp = BASE64로 인코딩된 데이터

//Base64로 디코딩해서 Byte배열에 삽입
  byte[] buf1 =Base64.decode(temp, Base64.DEFAULT);

//해당 바이트 배열을 비트맵으로 변환
     Bitmap image1 = BitmapFactory.decodeByteArray(buf1 ,0,buf1.length);

//이미지뷰 정의
  ImageView Profile_Photo = (ImageView) findViewById(R.id.active_viewer);

//이미지뷰에 비트맵 출력
  Profile_Photo.setImageBitmap(image1);
mong_phw (310 포인트) 님이 2013년 8월 8일 답변
우와 감사드립니다 ㅜ ㅜ !!아아 이런방식이엇군요 ㅜ ㅜ 비트맵정의만 맞췃다면 거의해결된건데 ㅜ ㅜ어째든 감사드립니다!  제가 지금 집가는중이라서요 집가서 해본다음 해결되면 채택드릴게요!!!
저기 ㅠㅠ.. 답변은 정말 좋으신거같은데 이게 BASE64로 인코딩데이터를 만들기가 힘드네요.. URL링크를 그대로 쓰면 서버에서 인코딩값을 받아오는게아니라 그냥 URL글자를 디코딩해버리네요 ㅠㅠ.. 그래서 아무것도 출력이안되구여.. 일단 답변은 감사합니다..
...