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

Webview 이미지 구현문제 ㅠㅠ

0 추천

질문제목과 같이 webview 이미지 구현 문제떄문에 질문을 드리게됬습니다 ㅠㅠ

일단 제가 하려는것은 동광고등학교라는 사이트에 코드를 그대로 값을 가져와서 String으로 변환시킨뒤 그 값에서 이미지링크값을 잘라내여 webview로 출력하는 것을 구현하고 싶었지만.. 그것이  webview가 이미지로 나오는게아니라 수많은 코드? 그러한 비슷한값으로 출력이됩니다.. 네이버나 다른사이트는 잘되는데 왜 이것만 안되는것일까요 ㅠㅠ 문제는 일반 웹브라우저로도 직접 저 링크값을 입력해도 위에 설명한것처럼 깨져서 나오네요.. 어떻게 해야할지모르겟습니다 ㅠㅠ

제가 실수한것이나 수정해야할게 있다면 말씀부탁드립니다 ㅠㅠㅠㅠㅠ...

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

저위에는 webview출력화면 ㅠㅠ..

 

	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();
					}
		            
			}
	};


 

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

2개의 답변

0 추천
 
채택된 답변
해당 링크의 경우 base64로 인코딩된 jpeg 바이너리 데이터를 리턴하는 듯 합니다.

요새 브라우저들은 이를 처리해서 이미지로 보여주는데,

WebView에서는 그런 처리까지 지원을 안하는 것 같네요.

이런 경우, 링크의 데이터를 직접 받은다음

String html = "<img src=\"data:image/jpeg;base64," + base64String + "\"/>";

이런식으로 html 만들어서 로드하는 방법이 있을 것 같네요.
b22n (22,940 포인트) 님이 2013년 8월 6일 답변
코코아주스님이 2013년 8월 7일 채택됨
아아 감사합니다ㅜㅜㅜㅜㅜ 한번 실행하고 이리저리 노력해본다음 해결되면 채택해드리겠습니다!
저기 죄송하지만 ㅠㅠ 제가 base64에 대해 알아보고
String html = "<img src=\"data:image/jpeg;base64," + base64String + "\"/>";
이소스도 String으로 html형식을 만들어서 이미지파일을 base64로 base64String디코딩해라? 이런걸로 이해를 햇거든요 ㅠㅠ 그런데 저 base64String 저값을 어떻게 얻어야하나요.. 제가 이해를 잘못한걸까요 아무리 제가 받아온 데이터값http://file11.e-wut.com/hosts/11068/board/1311.-1.424.1375060215 이걸 base64클래스를 이용해서 인코딩해서 저기에 대입해도되지않고 html분석을 해봐도 저소스말고는 다른것도없고.. 좋은 힌트를 주셧는데 제가 받아먹지를 못하네요 ㅠ.. 귀찮으시겟지만 ㅠㅠ.. 좀더 자세한설명안될까요..?
0 추천

동광고등학교 홈페이지는 euc-kr로 인코딩 되어있네요.

스트링 변환하실 때 인코딩 맞춰주세요.

 

b22n (22,940 포인트) 님이 2013년 8월 6일 답변
BufferedReader br = new BufferedReader(
                                new InputStreamReader(conn.getInputStream(),"euc-kr"));
                        for(;;){
                            String line = br.readLine();
                            if(line == null)break;
                            html.append(line + '\n');
                        }
                        br.close();
ㅠㅠ 변환은 되어있었습니다.. ㅠㅠㅠ 다른문제는 없을까요?
브라우저로 봐도 깨진다는 그 링크 url이 어떻게 되나요.
브라우저로 봐도 깨진다면 애초에 이미지 추출을 잘못한듯 합니다.
저기 위에 링크 보시면 오늘의유머라고 제가 오류화면이있는데요..
http://file11.e-wut.com/hosts/11068/board/1311.-1.424.1375060215
이 주소입니다.. 저또한 링크를 잘못자른줄알고 텍스트뷰에 web뷰에 넣은 값을 그대로 출력하였습니다 코드상에서도 나와있습니다 ㅠㅠ.. 하아..
흠 WebView에서 base64로 인코딩된 jpeg 을 못 보여주네요.
...