공부/Android

[Android] 웹 이미지를 ImageView에 적용시키기

JangGiraffe 2016. 10. 9. 18:44

이미지 URL을 안드로이드 ImageView에 적용시키기 위해서는 HTTP통신이 필요합니다.

아래 소스는 HttpURLConnection을 사용해 커넥션을 열고 Bitmap이미지를 받아오는 방법입니다.

HTTP통신을 하기 위해서는 메인 스레드가 아닌 별도의 스레드를 만들어서 작업해야합니다.

자주 필요할 것 같아 함수로 만들었습니다.

* 매니페스트에 INTERNET 권한 설정 추가해줘야 합니다.

//URL을 통해 비트맵 파일을 return
public Bitmap bitmapFromUrl(final String sUrl){
final Bitmap[] bitmap = new Bitmap[1];
//안드로이드에서 네트워크 관련 작업을 할 땐 별도의 스레드를 생성해서 작업해야 함.
Thread mThread = new Thread(){
@Override
public void run(){
try {
URL url = new URL(sUrl);
//httpURLConnection을 사용해 url과 연결.
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.connect();
// 커넥션에서 인풋스트림을 받아 Bitmap 변환
InputStream is = conn.getInputStream();
bitmap[0] = BitmapFactory.decodeStream(is);

} catch (IOException e) {
e.printStackTrace();
}
}
};

mThread.start(); // 구현한 쓰레드를 실행시킨다.

try{
//멀티쓰레드 작업 중 서브스레드의 결과를 메인스레드에 적용시켜야 할 필요가 있는 경우
//메인스레드의 필요한 작업이 종요할 때 까지 대기하도록 하는 메서드
mThread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
return bitmap[0];
}

//비트맵 이미지를 이미지뷰에 적용
public void intoImageView(ImageView iv, Bitmap bitmap){
if(bitmap!=null) {
iv.setImageBitmap(bitmap);
}else{
// iv.setImageBitmap(오류이미지);
}
}

 

반응형