내 데이터베이스에서 이미지를로드해야합니다. 안드로이드처럼 이미지를 BLOB에 저장합니다. 각 이미지는 내 복장 URI로 표시됩니다. Glide으로 어떻게 해결할 수 있습니까?글라이드 의상 URI 스키마
글라이드 캐시와 빠른 로딩의 혜택을보고 싶습니다.
올바른 방법이 있습니까?
내 데이터베이스에서 이미지를로드해야합니다. 안드로이드처럼 이미지를 BLOB에 저장합니다. 각 이미지는 내 복장 URI로 표시됩니다. Glide으로 어떻게 해결할 수 있습니까?글라이드 의상 URI 스키마
글라이드 캐시와 빠른 로딩의 혜택을보고 싶습니다.
올바른 방법이 있습니까?
Glide.get (context) .register() 메소드를 호출하여 ModelLoader 클래스을 글라이드에 등록 할 수 있습니다. ModelLoader에서 getResourceFetcher 메소드를 구현하고 데이터베이스 사용자 정의 DataFetcher 인스턴스를 리턴하여 데이터베이스에서 이미지 자원을로드하는 방법을 Glide에 알릴 수 있습니다.
DBImageUri 클래스 : 여기
은 예입니다public class DBImageUri {
private String uriString;
public DBImageUri(String uriString){
this.uriString = uriString;
}
@Override
public String toString(){
return uriString;
}
}
DBDataFetcher 클래스 :
public class DBDataFetcher implements DataFetcher<InputStream> {
private DBImageUri uri;
private int width;
private int height;
private InputStream stream;
public DBDataFetcher(DBImageUri uri, int width, int height){
this.uri = uri;
this.width = width;
this.height = height;
}
@Override
public InputStream loadData(Priority priority){
String uriString = this.uri.toString();
stream = //**load image based on uri, and return InputStream for this image. this is where you do the actual image from database loading process**;
return stream;
}
@Override
public String getId(){
//width & height should be ignored if you return same image resources for any resolution (return uri.toString();)
return uri.toString() + "_" + width + "_" + height;
}
@Override
public void cleanup(){
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
// Ignore
}
}
}
@Override
public void cancel(){
}
}
DBModelLoader 클래스 :
public class DBModelLoader implements ModelLoader<DBImageUri, InputStream> {
@Override
public DataFetcher<InputStream> getResourceFetcher(DBImageUri model, int width, int height){
return new DBDataFetcher(model, width, height);
}
public static class Factory implements ModelLoaderFactory<DBImageUri, InputStream>{
@Override
public ModelLoader<DBImageUri, InputStream> build(Context context, GenericLoaderFactory factories){
return new DBModelLoader();
}
@Override
public void teardown(){
}
}
}
한 다음 미군 병사에 ModelLoader를 추가 호출하여 IDE 레지스트리 대신 당신은 장치와 저장소의 내부/외부 저장소에 저장하지 않는 이유 데이터베이스에 BLOB에 이미지를 저장
Glide.with(context).load(new DBImageUri(/*your unique id string for database image*/)).into(imageview);
코드 예제를 보여 주시겠습니까 –
죄송합니다. 새로운 레지스트리 클래스가 최신 릴리스 버전 인 v3.7.0에 포함되어 있지 않은 것을 보지 못했습니다. 예를 들어 답을 편집했습니다. – 7heaven
:
지금당신이 데이터베이스 이미지를로드 할 수 있습니다 패스를 데이터베이스로 가져온 다음 글라이드를 사용하여 경로 및로드를 사용하여 이미지를 간단히 검색 할 수 있습니다. –
@RajeshPanchal 이미지가 저장되는 방식을 변경하지 않고 Glide와 통합하기 만하면됩니다. –