본문 바로가기

APP DEVELOPER/Android 안드로이드

[안드로이드] HTTP로 이미지파일 BITMAP 받아오기

안드로이드 - HTTP로 이미지 받아오기 (Firebase 버전이 아니다.)

Firebase 버전도 만들어봐야 할것이다.

- HTTP나 통신으로 무언가를 할려면, 메인 쓰레드말고

- 새로운 쓰레드 Thread나 AsyncTask가 필요하다.

- 이미지 데이터를 통신으로 다 받아올때까지 기다려야 한다.

- 인터넷 관련 작업시 INTERNET permission도 필요하다.

- 실제 이미지를 불러오는 응답속도는 빠르다. 

 

 

 

이 과정들이 소스도 길고 번거롭기 때문에, 

FIREBASE나 Glide로 대신하게 된다.

물론 해당 API를 자세히 들여다보면, 

Thread나 통신이 가려져 있다.

 

 

 

 


 

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

 

 

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<LinearLayout
android:id="@+id/liner1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"></LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

 

package com.nocean.httpimgtest;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import static java.lang.Thread.*;

public class MainActivity extends AppCompatActivity {
    LinearLayout linear;
    Bitmap mybitmap;

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

        //==================== 적용할 레이아웃 불러오기, 신규 이미지 생성하기 ==================
        linear = (LinearLayout) findViewById (R.id.liner1);
        ImageView img= new ImageView(this);

        Thread mThread = new Thread ()
        {
            @Override
            public void run()
            {
                try
                {
                    URL url1 = new URL("http://noceantest.cafe24.com/android_server/my_image.jpg");
                    try
                    {
                        HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
                        conn.setDoInput(true);
                        conn.connect();

                        //==================== 이미지 파일 읽어오기 =============================

                        InputStream is= conn.getInputStream();
                        mybitmap = BitmapFactory.decodeStream(is);
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                }
                catch (MalformedURLException e)
                {
                    e.printStackTrace() ;
                }


            }
        };


        mThread.start();
        try
        {
            mThread.join();
            img.setImageBitmap(mybitmap);
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        linear.addView(img);
        Toast.makeText(getApplicationContext(),"이미지를 불러왔습니다.", Toast.LENGTH_LONG).show();
    }
}