관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[안드로이드] Glide 라이브러리 간단한 사용방법 + 비트맵으로받기 본문

안드로이드/자바 & Previous

[안드로이드] Glide 라이브러리 간단한 사용방법 + 비트맵으로받기

막무가내막내 2019. 3. 22. 23:27
728x90

이번에 이미지가 있는 URL을 파싱해와서 이 URL을 어떻게 이미지로 받아서 사용할 수 있을까 하다가 Glidle 라이브러리를 써서 이미지가 있는 URL을 이미지로 변환하여 사용할 수 있었다.

 

Glide말고도 스퀘어사에서 만든 Picasso 라이브러리도 찾았지만 좀 더 대중적으로 사용하는 Glide를 사용하게 되었다. 둘이 비교하면 용량이적고 빠른건 Glide이고 용량과 상대적으로 조금더 느리지만 화질이 좋은건 Picasso라고한다. 잘 비교해서 더 필요한걸 사용하면 좋을 것 같다.

 

https://github.com/bumptech/glide

Glide 레포지토리고 구글에서 개발했다고 한다. 

 

Glide 사용방법에 대해 간단하게 정리해보았다.

먼저 Glide를 사용하기위해 Gradle module에 추가해준다.

implementation 'com.github.bumptech.glide:glide:3.7.0'

 

 

Glide를 기본적인 사용방법은 다음과 같다.

Glide.with(this).load(imageUrl).into(imageView); //Glide을 이용해서 이미지뷰에 url에 있는 이미지를 세팅해줌

1. imageUrl=> String형으로 이미지가 있는 주소를(url)담고있다. 

ex) http://movie.phinf.naver.net/20171107_251/1510033896133nWqxG_JPEG/movie_image.jpg

 

2. imageView => 말 그대로 xml의 이미지뷰이다.

 

이렇게 한줄이면 해당 url의 이미지를 뷰에 담아줄 수가 있었다. (url 뿐만 아니라 다른 형태의 타입도 glide로 띄워줄 수 있다.)

 

이전에 다른 예제에서 이미지의 URL을 이미지로 불러올려면 꽤 코드를 길게 쓰고 복잡했었는데 Glide 라이브러리를 이용해 이렇게 한줄이면 되니 매우 편리했었다.

 

이렇게 단순 이미지만 불러오는거 외에도 다른 함수들도 존재하는데 다음과 같다.

 

- override()

: 지정한 이미지의 크기만큼만 불러올수 있습니다. 이를 통해 이미지 로딩 속도를 최적화 할수있습니다.

 

- placeholder()

: 이미지를 로딩하는동안 처음에 보여줄 placeholder이미지를 지정할 수 있습니다.

 

- error()

이미지로딩에 실패했을경우 실패 이미지를 지정할 수 있습니다.

 

- thumbnail()

: 지정한 %비율 만큼 미리 이미지를 가져와서 보여줍니다.

0.1f로 지정했다면 실제 이미지 크기중 10%만 먼저 가져와서 흐릿하게 보여줍니다.

 

 

- asGif()

: 정적인 이미지 뿐만 아니라 GIF도 로딩할수 있습니다.

 

이밖에 centerCrop(), fitCenter , 사이즈조절(  .override(x,y) ), 동그랗게 출력 등의 기능이 있는데 그것은 구글링하면 금방 나오니 찾아보면된다. 

 

출처: https://gun0912.tistory.com/17 [박상권의 삽질블로그]

 

 

thumbnail()과 placeholder()를 사용한 예시이다.  placeholder에 들어간 스피너는 로딩gif이다.

Glide.with(context).load(model.getSendImage()).thumbnail(0.1f).placeholder(R.drawable.loading_spinner).into(holder3.sendImageVIew2);

 

 

마지막으로 Glide에서 url로 받아오는경우 비트맵으로 변환시키고 싶을때가 있다. 

그럴때는 다음과 같은 코드를 실행하면 된다. (비동기이다.) 원래는 asBitmap()으로 가능했던거 같은데 버전업이 된 이후로 안되는 것 같다. 그래거 이와 같은 방법으로 비트맵을 받았다.

Glide.with(this)
.asBitmap().load(mPhotoList.get(0))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object o, Target<Bitmap> target, boolean b) {
return false;
}

@Override
public boolean onResourceReady(Bitmap bitmap, Object o, Target<Bitmap> target, DataSource dataSource, boolean b) {
Log.d(TAG, "비트맵변환한거0 => " + bitmap);
mPhoto0ImageView.setImageBitmap(bitmap);
mPhotoBitmapList.add(bitmap);
return false;
}
}
).submit();

 

 

* 이미지의 위치(URL)을 이미지로 변환해 사용해야할 때 Glide 라이브러리를 애용하도록하자. 또한 캐싱까지해줘서 다시불러올때 더 빠르게 불러올 수 있다

 

 

댓글과 공감은 큰 힘이됩니다!

참고: https://github.com/bumptech/glide

       https://gun0912.tistory.com/17

 

 

 

728x90
Comments