将Gif的位图加载到ImageView

时间:2019-04-30 13:40:34

标签: android bitmap imageview firebase-storage gif

因此,我正在将GIF上传到Firebase存储器,并且已经完成了上传和检索工作。

现在,如果我想从网址加载gif, 滑翔效果最佳。 从URI(本地存储)中, 滑翔效果最佳。 如果我想从URI加载它,即使GifImageView也很好

现在我想做的是,将此gif转换为位图,然后转换为字节数组,将其作为blob存储在我的sqlite中。 但是现在,从位图播放gif,我无法弄清楚。 甚至GifImageView也无法。

我该如何在应用程序中存储gif,不要创建文件,因此,我认为sqlite是唯一的选择。存储Blob效率不高,但是,对我而言,它可以正常工作。

从Firebase存储中检索是很容易的,可以直接使用glide将URL中的图像加载到ImageView, 现在的挑战是,存储此图像的位图。即使这样也很公平。但是将(gif图像的)位图加载到ImageView是一个挑战

所以我尝试了以下代码:

public void selectImage()
    {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent, PICK_IMAGE_REQUEST);
    }

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

        if(requestCode == PICK_IMAGE_REQUEST && resultCode==RESULT_OK && data != null)
        {
            ImageUri = data.getData();
            trialfunct(ImageUri);
        }
    }

    void trialfunct(Uri uri)
    {
        try {
            Glide.with(this).asBitmap().load(uri).into(new CustomTarget<Bitmap>() {
                @Override
                public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                    placebm(resource);
                }

                @Override
                public void onLoadCleared(@Nullable Drawable placeholder) {

                }
            });
        }catch (Exception e)
        {
            Log.d("Bitmap Error", ""+e.toString());
        }
    }

    void placebm(Bitmap bitmap)
    {
        Glide.with(this).load(bitmap).into(loadImage);
    }

,适用于常规图像 但是,当我将行更改为Glide.with(this).asGif().load(bitmap).into(loadImage);并从图库中选择一个gif时,此代码将不起作用。所以我该如何处理gif和位图。

0 个答案:

没有答案