因此,我正在将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和位图。