티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
How does one use glide to download an image into a bitmap?
Glide를 사용하여 이미지를 비트맵으로 다운로드하는 방법은 무엇인가요?
문제 내용
Downloading a URL into an ImageView
is very easy using Glide:
Glide를 사용하여 URL을 ImageView에 다운로드하는 것은 매우 간단합니다.
Glide
.with(context)
.load(getIntent().getData())
.placeholder(R.drawable.ic_loading)
.centerCrop()
.into(imageView);
I'm wondering if I can download into a Bitmap
as well? I'd like to download into a raw bitmap that I can then manipulate using other tools. I've been through the code and don't see how to do it.
Glide를 사용하여 이미지를 비트맵으로 다운로드 할 수 있을까요? 다운로드 된 비트맵을 기타 도구를 사용하여 조작 할 수 있는 생 로우 비트맵으로 다운로드하려고합니다. 코드를 검토했지만 방법을 찾지 못했습니다.
높은 점수를 받은 Solution
Make sure you are on the Lastest version
"Make sure you are on the latest version"은 최신 버전을 사용하고 있는지 확인해달라는 뜻입니다.
implementation 'com.github.bumptech.glide:glide:4.10.0'
Kotlin:
Kotlin: (Kotlin은 자바 가상 머신(Java Virtual Machine, JVM)에서 돌아가는 객체 지향 프로그래밍 언어입니다.)
Glide.with(this)
.asBitmap()
.load(imagePath)
.into(object : CustomTarget<Bitmap>(){
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
imageView.setImageBitmap(resource)
}
override fun onLoadCleared(placeholder: Drawable?) {
// this is called when imageView is cleared on lifecycle call or for
// some other reason.
// if you are referencing the bitmap somewhere else too other than this imageView
// clear it here as you can no longer have the bitmap
}
})
Bitmap Size:
Bitmap 크기:
if you want to use the original size of the image use the default constructor as above, else You can pass your desired size for bitmap
원본 이미지의 크기를 사용하려면 위와 같이 기본 생성자를 사용하면 됩니다. 그 외에는 비트맵에 원하는 크기를 전달할 수 있습니다.
into(object : CustomTarget<Bitmap>(1980, 1080)
Java:
자바:
Glide.with(this)
.asBitmap()
.load(path)
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
Old Answer:
과거의 답변:
With compile 'com.github.bumptech.glide:glide:4.8.0'
and below
버전 '4.8.0'을 사용하는 경우 다음과 같이 의존성을 추가하세요.
Glide.with(this)
.asBitmap()
.load(path)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
}
});
For compile 'com.github.bumptech.glide:glide:3.7.0'
and below
버전 '3.7.0' 이하에서는 다음과 같이 사용합니다.
Glide.with(this)
.load(path)
.asBitmap()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
imageView.setImageBitmap(resource);
}
});
Now you might see a warning SimpleTarget is deprecated
이제 SimpleTarget이 더 이상 권장되지 않으므로 경고 메시지가 표시될 수 있습니다.
Reason:
이유:
The main point of deprecating SimpleTarget is to warn you about the ways in which it tempts you to break Glide's API contract. Specifically, it doesn't do anything to force you to stop using any resource you've loaded once the SimpleTarget is cleared, which can lead to crashes and graphical corruption.
SimpleTarget가 deprecated되는 이유는 Glide의 API 계약을 위반하게 만드는 방법을 경고하는 것입니다. 구체적으로, SimpleTarget이 지워진 후 로드한 모든 리소스를 중지하도록 강제하지 않기 때문에 충돌 및 그래픽 손상이 발생할 수 있습니다.
The SimpleTarget
still can be used as long you make sure you are not using the bitmap once the imageView is cleared.
SimpleTarget은 ImageView가 clear되면 해당 bitmap을 더 이상 사용하지 않도록 주의한다면 계속해서 사용할 수 있습니다.
가장 최근 달린 Solution
Kotlin Function
Kotlin 함수
inline fun getBitmap(imageUrl: String, block: (Bitmap?) -> Unit) {
return try {
val url = URL(imageUrl)
val image = BitmapFactory.decodeStream(url.openConnection().getInputStream())
block(image)
} catch (e: IOException) {
println(e)
block(null)
}
}
출처 : https://stackoverflow.com/questions/27394016/how-does-one-use-glide-to-download-an-image-into-a-bitmap
'개발 > 안드로이드' 카테고리의 다른 글
WebView 데이터 로드 후 스크롤뷰가 스크롤되는 문제 수정하기 (0) | 2023.02.05 |
---|---|
EditText를 둥근 모서리로 만들기 (0) | 2023.02.05 |
세로 모드 강제 적용하기 (0) | 2023.02.04 |
안드로이드 "elevation" 그림자 표시 문제 수정하기 (0) | 2023.02.03 |
AppCompat에서 전체 화면 적용하기 (0) | 2023.02.02 |