본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] web, internet에서 image 읽어오는 방법 + Cache. ( download, load )

by 돼지왕 왕돼지 2012. 2. 18.
반응형


안녕하세요 돼지왕 왕돼지입니다.
오늘은 Internet 에서 image 를 읽어오는 방법 ( download, load )과 Cache 를 하는 방법을 코드를 통해 알아보겠습니다.
 
 

<ImageView에 바로 연결하기>

ImageView img = (ImageView)findViewbyId(R.id.result);
 
// 그림 용량이 클 경우 decodeStream이 오랜 시간을 소모할 수 있다.
String imageurl = "http://developer.android.com/images/opengl/coordinates.png";
try{
   InputStream is = new URL( imageurl ).openStream();
   Bitmap bit = BitmapFactory.decodeStream( is );
   img.setImageBitmap( bit );
   is.close();
catch(Exception e) { ; }

 

 
<Cache 하며 ImageView에 설정하기>

// 저장하고 Cache '처럼' 작동시키는 방법
String imageurl = "http://www.winapi.co.kr/data/child3.jpg";
int idx = imageurl.lastIndexOf('/');
String localimage = imageurl.substring(idx + 1);
String path = Environment.getDataDirectory().getAbsolutePath();
path += "/data/exam.Network/files/" + localimage;
 
if (new File(path).exists() == false){
   DownloadImage(imageurl, localimage);
}
 
Bitmap bitmap = BitmapFactory.decodeFile(path);
img.setImageBitmap(bitmap);
 
boolean DownloadImage(String Url, String FileName){
   URL imageurl;
   int Read;
   try{
      imageurl = new URL(Url);
      HttpURLConnection conn = (HttpURLConnection)imageurl.openConnection();
      int len = conn.getContentLength();
      byte[] raster = new byte[len];
      InputStream is = conn.getInputStream();
      FileOutputStream fos = openFileOutput(FileName, 0);
 
      for (;;){
         Read = is.read(raster);
         if (Read <= 0){
            break;
         }
         fos.write(raster, 0, Read);
      }
      is.close();
      fos.close();
      conn.disconnect();
   }
   catch(Exception e){
      return false;
   }
   return true;
}



로그인 없이 추천 가능합니다. 손가락 꾸욱~

반응형

댓글