안드로이드 Url을 이용하여 Bitmap 다운로드
안드로이드 개발을 하다보면 가끔씩 Url을 이용하여 Bitmap을 ImageView에 넣어줘야 할일이 많습니다.
또는 API 통신을 하여 받은 ImageUrl을 가지고 있다가 다른곳에서 ImageView에 넣어줘야 할때도 있습니다.
그럴때 저는 이 ImageUrl을 이용하여 이미지를 Bitmap으로 다운받은 후 String형태로 전환하여 가지고 있다가
다른페이지에서 다시 String 형태를 Bitmap으로 전환하여 사용합니다. 사용하는 위치에 가서 통신을 이용하여 Bitmap을
가져오기엔 타이밍이 않맞거나 뭐 다른일이 생길까봐 보통 그렇게 합니다.
HttpURLConnection conn = null; try { URL url = new URL(imageUrl); conn = (HttpURLConnection) url.openConnection(); conn.setDoInput(true); conn.setConnectTimeout(8000); conn.connect(); InputStream is = conn.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(is); if(bitmap == null) return null; ByteArrayOutputStream bos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG,100, bos); byte [] b = bos.toByteArray(); String strBit = Base64.encodeToString(b, Base64.DEFAULT); return strBit; } catch (IOException e) { e.printStackTrace(); return null; }finally{ if(conn!=null)conn.disconnect(); }
String 형태의 Bitmap Image를 다시 Bit맵으로 변환하는 방법입니다.
try{ byte [] encodeByte = Base64.decode(encodedString,Base64.DEFAULT); Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length); return bitmap; }catch(Exception e){ e.getMessage(); return null; }