2016-03-15 61 views
1

我的应用程序中有一个SqliteDatabase。在此数据库中,我保存StingBlob(用于保存图像)。该图像保存在byte []的应用程序中。我转换这个图像与下面的代码的帮助下,位图:如何在Android上的Glide中设置位图图像

byte[] Recycler_imageByte; 
    Bitmap Recycler_theImage; 

holder.Recycler_imageByte = data.get(position).getKey_image(); 
ByteArrayInputStream imageStream = new ByteArrayInputStream(holder.Recycler_imageByte); 
holder.Recycler_theImage = BitmapFactory.decodeStream(imageStream); 

我想在Glide libary显示此图像,我写了下面的代码:

Glide.with(context).load(holder.Recycler_theImage).asBitmap().into(holder.Recycler_adapter_image); 

但是,当我运行的应用程序,出现以下错误:

03-15 10:23:14.311 22440-22440/com.tellfa.dastanak E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.tellfa.dastanak, PID: 22440 
java.lang.IllegalArgumentException: Unknown type class android.graphics.Bitmap. You must provide a Model of a type for which there is a registered ModelLoader, if you are using a custom model, you must first call Glide#register with a ModelLoaderFactory for your custom model class 
at com.bumptech.glide.RequestManager.loadGeneric(RequestManager.java:629) 
at com.bumptech.glide.RequestManager.load(RequestManager.java:598) 
at com.tellfa.dastanak.Adapters.fragment_RecyclerAdapter.onBindViewHolder(fragment_RecyclerAdapter.java:54) 
at com.tellfa.dastanak.Adapters.fragment_RecyclerAdapter.onBindViewHolder(fragment_RecyclerAdapter.java:27) 
at jp.wasabeef.recyclerview.adapters.AnimationAdapter.onBindViewHolder(AnimationAdapter.java:55) 
at jp.wasabeef.recyclerview.adapters.AnimationAdapter.onBindViewHolder(AnimationAdapter.java:55) 
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5217) 
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5250) 
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4487) 
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4363) 
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1961) 
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1370) 
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1333) 
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:562) 
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2900) 
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3071) 
at android.view.View.layout(View.java:15654) 
at android.view.ViewGroup.layout(ViewGroup.java:4969) 
at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:584) 
at android.view.View.layout(View.java:15654) 
at android.view.ViewGroup.layout(ViewGroup.java:4969) 
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1077) 
at android.view.View.layout(View.java:15654) 
at android.view.ViewGroup.layout(ViewGroup.java:4969) 
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 
at android.widget.FrameLayout.onLayout(FrameLayout.java:508) 
at android.view.View.layout(View.java:15654) 
at android.view.ViewGroup.layout(ViewGroup.java:4969) 
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1077) 
at android.view.View.layout(View.java:15654) 
at android.view.ViewGroup.layout(ViewGroup.java:4969) 
at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1627) 
at android.view.View.layout(View.java:15654) 
at android.view.ViewGroup.layout(ViewGroup.java:4969) 
at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1037) 
at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:747) 
at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42) 
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1156) 
at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:760) 
at android.view.View.layout(View.java:15654) 
at android.view.ViewGroup.layout(ViewGroup.java:4969) 
at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1043) 
at android.view.View.layout(View.java:15654) 
at android.view.ViewGroup.layout(ViewGroup.java:4969) 
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 
at android.widget.FrameLayout.onLayout(FrameLayout.java:508) 
at android.view.View.layout(View.java:15654) 
at android.view.ViewGroup.layout(ViewGroup.java:4969) 
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1705) 
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1559) 
at android.widget.LinearLayout.onLayout(LinearLayout.java:1468) 
at android.view.View.layout(Vi 

我该如何解决这个问题并在Glide库中显示位图?

回答

-2

试试这个。

Glide.with(this) 
      .load(holder.Recycler_theImage) 
      .diskCacheStrategy(DiskCacheStrategy.ALL)    
      .asBitmap().into(holder.Recycler_adapter_image); 

它可以帮助...

+0

谢谢@ SJ143,但是使用'.diskCacheStrategy(DiskCacheStrategy.ALL)',不知道'.asBitmap()'!!! – erere

+0

好的..只是跳过this.try剩下的 – 2016-03-15 09:52:09

+0

asBitmap()必须在载入之前()在滑翔4和之后滑翔3。 – David

7

这完全适用于我。你可以试试以下内容,

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (resultCode != Activity.RESULT_OK) return; 

    if (requestCode == AppConstants.REQUEST_CAMERA_PICK) { 
     Bitmap photo = (Bitmap) data.getExtras().get("data"); 
     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     photo.compress(Bitmap.CompressFormat.PNG, 100, stream); 
     Glide.with(this) 
      .load(stream.toByteArray()) 
      .asBitmap() 
      .error(R.drawable.ic_thumb_placeholder) 
      .transform(new CircleTransform(this)) 
      .into(imageview); 
    } 
    } 
相关问题