반응형
안녕하세요 오늘은 웹서버에서 이미지를 파싱해보려고합니다.
아주간단한 예제입니다.
필요하신분들은 참고하세요 :D
그냥 실행해보시면 퍼미션에러가 납니다. 꼭 AndroidManifest.xml 파일에다가 다음내용을 추가해주세요 !!
- <uses-permission
- android:name="android.permission.INTERNET"/>
아주 미약한 실력이지만 주석달아놨습니다.
실수가 있을수있으니 실수가 있다면 태클 걸어주시기 바랍니다.
WebImageParse.java 소스입니다.
- package com.j0ker.parsing;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.HttpURLConnection;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Random;
- import android.app.Activity;
- import android.os.Bundle;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ImageView;
- public class WebImageParse extends Activity
- {
- ImageView imView;
- String imageUrl = "http://j0ker.dothome.co.kr/"; // 이미지를 파싱해올 URL
- Random r; // 사진을 랜덤으로 불러오기위한 랜덤변수
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- r = new Random(); // 랜덤을 초기화 합니다.
- Button bt3 = (Button)findViewById(R.id.get_imagebt); // 버튼을 연결시켜줍니다.
- bt3.setOnClickListener(getImgListener); // 버튼에 클릭이벤트를 감지할 리스너를 설치해줍니다.
- imView = (ImageView)findViewById(R.id.imview); // 이미지를 읽어들일 이미지뷰를 연결해줍니다.
- }
- // 클릭이벤트가 발생했을경우 의 처리를 해주는 함수입니다.
- View.OnClickListener getImgListener = new View.OnClickListener()
- {
- @Override
- public void onClick(View v) // 클릭이 일어났을경우
- {
- // TODO Auto-generated method stub
- int i = r.nextInt()%4+1; // i 에 랜덤한 숫자를 생성시켜줍니다.
- downloadFile(imageUrl+i+".png"); // 해당파일을 다운로드 합니다.
- Log.i("im url",imageUrl+i+".png"); // 디버깅을 위한 Log를 설정해줍니다.
- }
- };
- Bitmap bmImg; // 비트맵을처리할 변수를 생성합니다.
- // 이미지를 다운로드하는 함수입니다. 파라미터는 String형
- // fileUrl 이 들어갑니다.
- void downloadFile(String fileUrl)
- {
- URL myFileUrl = null; // URL 타입의 myFileUrl을 NULL로 초기화 시켜줍니다.
- try
- {
- myFileUrl = new URL(fileUrl); // 파라미터로 넘어온 Url을 myFileUrl에 대입합니다.
- }
- catch(MalformedURLException e) // 예외처리를 해줍니다.
- {
- // Todo Auto-generated catch block
- e.printStackTrace();
- }
- try
- {
- // 실질적인 통신이 이루어지는 부분입니다.
- // myFileUrl 로 접속을 시도합니다.
- HttpURLConnection conn = (HttpURLConnection)myFileUrl.openConnection();
- conn.setDoInput(true);
- conn.connect();
- int length = conn.getContentLength(); // 받아온 컨텐츠의 길이를 length 변수에 저장합니다.
- InputStream is = conn.getInputStream(); // InputStream is 변수에 받아온 InputStream을 저장합니다.
- bmImg = BitmapFactory.decodeStream(is); // 받아온 이미지를 bmImg에 넣어둡니다.
- imView.setImageBitmap(bmImg); // imView에 이미지를 셋팅합니다.
- }
- catch(IOException e) // 예외처리를 해줍니다.
- {
- e.printStackTrace();
- }
- }
- }
Main.xml 내용입니다.
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="간단한 이미지파싱예제입니다. !"/>
- <Button
- android:id="@+id/get_imagebt"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Get an image"
- android:layout_gravity="center"
- />
- <ImageView
- android:id="@+id/imview"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- />
- </LinearLayout>