2014년 7월 5일 토요일

[Android] 이미지 불러오기(Load Image)


이미지 불러오기(Load Image)


안드로이드를 개발하다 보면 문득 어플리케이션의 크기에 대해서 생각을 하게 되는데, 
예를 들어서 이미지 파일의 경우에는 파일 갯수가 적을 경우에는 어플리케이션 내부 파일에 이미지를 넣어두고 사용해도 상관이 없지만, 만약에 이미지 파일의 갯수가 많다면 문제가 됩니다.

이런 경우에 보통 서버를 두고 안드로이드 어플리케이션에서 요청을 하면 서버에서 이미지 파일을 보내주는 형식으로 개발을 합니다. 서버에 있는 이미지를 요청해서 다운받아서 사용하는 방법을 알아보도록 하겠습니다.






이미지 불러오기(LoadImage)

을 사용하기 위해서는


manifest에 permission을 지정해야만 합니다.


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

</manifest>





활용예제


MainActivity .class


public class MainActivity extends Activity {


        @Override

        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                ImageView iv = (ImageView) findViewById(R.id.imageView1);


                iv.setImageBitmap(new ImageRoader().

                                                                                    getBitmapImg("image/test.PNG"));
}
}


---------------------------------------------------------------------------------------------



ImageRoader.class


public class ImageRoader {


        private final String serverUrl = "http://XXX.XXX.XXX.XXX:3000/";


        public ImageRoader() {


                new ThreadPolicy();

        }

        public Bitmap getBitmapImg(String imgStr) {


                Bitmap bitmapImg = null;


                try {

                        URL url = new URL(serverUrl + 
                                                                               URLEncoder.encode(imgStr, "utf-8"));
                        // Character is converted to 'UTF-8' to prevent broken

                        HttpURLConnection conn = (HttpURLConnection) url

                                                                                                                       .openConnection();
                        conn.setDoInput(true);
                        conn.connect();

                        InputStream is = conn.getInputStream();

                        bitmapImg = BitmapFactory.decodeStream(is);

                } catch (IOException ioe) {

                        ioe.printStackTrace();
                }
                return bitmapImg;
        }
}


---------------------------------------------------------------------------------------------



ThreadPolicy.class


@TargetApi(Build.VERSION_CODES.GINGERBREAD)
public class ThreadPolicy {

         // For smooth networking

        public ThreadPolicy() {

                StrictMode.ThreadPolicy policy = 

                                     new StrictMode.ThreadPolicy.Builder().permitAll().build();

                StrictMode.setThreadPolicy(policy);

}
}




댓글 없음:

댓글 쓰기