본문 바로가기
안드로이드

[Android] 서버에 저장된 이미지 가져오기

by 엘딘 2022. 3. 28.

webapp안에 이미지를 업로드하여 서버에 저장

url/경로를 통해 불러온다...

 

Cursor: DB에서 가져온 데이터를 쉽게 처리하기 위해서 인터페이스를 제공

   행을 참조하기 때문에 Cursor의 위치를 바꿔주는 메소드들이 존재 

 Cursor.moveToFirst() - 처음 행으로 이동

 Cursor.moveToNext()

 Cursor.moveToPrevious()

 Cursor.moveToPosition(position) 

 Cursor.moveToLast()

 

 Cursor.getInt(0) - 해당 행 0번째 열 data 갖고옴

 Cursor.getstring(3)

 

 

URLConnection은 웹을 통해 데이터를 주고받는데 사용

 

 

AsyncTask 

 Thread를 사용할 때 UI객체에 접근하기위해 Handler를 통해 접근

 하지만, AsyncTask를 사용하면 하나의 클래스 안에 Thread동작 부분과 UI접근 부분 동시 정의 가능

 

doInbackground() - Thread부분

onProgressUpdate() - AsyncTask가 동작하는 중간중간 상태를 업데이트 하는 부분

onPostExecute() - AsyncTask가 종료되면 (doInbackground()코드가 모두 실행되면) 실행되는 부분

 

inputStream: 

 

// URL 객체를 생성

URL url = new URL(UrlString);

 

// URL에 연결된 객체를 생성

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

 

imageView.setImageBitmap(ImageRoader().getBitmapImg("1-1.jpg"))

// 이미지 가져오기
class ImageRoader {
    private val serverUrl = "http://14.39.38.168:3000/upload/"

    init {
        ThreadPolicy()
    }

    fun getBitmapImg(imgStr: String?): Bitmap? {
        var bitmapImg: Bitmap? = null
        try {
            val url = URL(
                serverUrl +
                        URLEncoder.encode(imgStr, "utf-8")
            )
            // Character is converted to 'UTF-8' to prevent broken
            val conn = url
                .openConnection() as HttpURLConnection
            conn.doInput = true
            conn.connect()
            val `is` = conn.inputStream
            bitmapImg = BitmapFactory.decodeStream(`is`)
        } catch (ioe: IOException) {
            ioe.printStackTrace()
        }
        return bitmapImg
    }
}

@TargetApi(Build.VERSION_CODES.GINGERBREAD)
class ThreadPolicy {
    // For smooth networking
    init {
        val policy = StrictMode.ThreadPolicy.Builder().permitAll().build()
        StrictMode.setThreadPolicy(policy)
    }
}

http://yongdaekim.blogspot.com/2014/07/android-loadimage.html

 

 

느낌만 좋음

/*

        val mThread: Thread = object : Thread() {
            override fun run() {
                try {
                    val url = URL("http://14.39.38.168:3000/upload/3.jpg")

                    val conn:HttpURLConnection = url.openConnection() as HttpURLConnection
                    conn.setDoInput(true)
                    conn.connect()
                    val `is`: InputStream = conn.getInputStream()
                    bitmap = BitmapFactory.decodeStream(`is`)
                } catch (e: MalformedURLException) {
                    e.printStackTrace()
                } catch (e: IOException) {
                    e.printStackTrace()
                }
            }
        }

        mThread.start() // Thread 실행

        try {
            mThread.join()

            imageView.setImageBitmap(bitmap)
        } catch (e: InterruptedException) {
            e.printStackTrace()
        }
*/

 

'안드로이드' 카테고리의 다른 글

[Android] RatingBar  (0) 2022.03.28
[Android] seekbar  (0) 2022.03.28
[Android] VideoView  (0) 2022.03.25
[Android] GridView  (0) 2022.03.25
[Android] ScrollView  (0) 2022.03.25

댓글