【问题标题】:convert byte array into gif in java/android将字节数组转换为Java / Android中的GIF
【发布时间】:2017-03-02 06:18:43
【问题描述】:

在我的 android 应用程序中,我从服务器接收字节数组,必须将它们转换为 .gif 图像,然后将其放置在视图中。 我已经知道如何使用 BitmapFactory 将它们转换为静止图像,但图像总是静止不动。 我使用gif-drawable 作为 .gif 图像的容器视图。我已经用本地动画 gif 对其进行了测试,效果很好。 如何将字节数组放入 gif 可绘制视图中?

在布局中我有这个:

<pl.droidsonroids.gif.GifImageView
            android:id="@+id/imgExerciseImage"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:contentDescription="exercise image" />

这是一个类似于 ImageView 的视图,可以显示 gif 动画

我想在其中显示我从我的 firebase 服务器接收到的图像。这是代码:

imageRef.getBytes(DatabaseConstants.ONE_MEGABYTE * 3).addOnSuccessListener(new OnSuccessListener<byte[]>() {
            @Override
            public void onSuccess(byte[] bytes) {
                Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
                imgExerciseImage.setImageBitmap(bitmap);
                progressDialog.dismiss();
            }
        }

byte[] 是动画 gif。但为了将它放在我的视图中,我必须使用 byte[] 来形成图像。在此示例中,我使用 BitmapFactory 创建位图。如何创建 gif 而不是位图?

【问题讨论】:

  • 为什么不把输入流转成图片呢?对此有很多支持。无需自己将整个内容读入字节数组。
  • 因为我使用的是firebase,除了字节数组我什么都得不到
  • 你这是什么意思?您将收到一个字节流。不是字节数组。对字节做什么取决于您。如果你把它们放在一个数组中是的,那么你就有一个字节数组。
  • 进一步不清楚字节代表什么。如果您必须将它们转换为 gif,它们包含什么?一张.jpg?一个.png?一个bmp?不是已经是gif图了吗?
  • 要使用firebase,您可以使用一个函数从服务器读取信息,然后在具有字节数组参数的回调中接收数据。我与输入流没有任何交互

标签: java android gif animated-gif


【解决方案1】:

似乎 gif-drawable 带有一个 GifDrawable 对象,该对象可以在其构造函数中接收一个字节数组以创建一个动画 gif,然后可以将其放置在 GifImageView 中

try {
    GifDrawable gif = new GifDrawable(bytes);
    imgExerciseImage.setImageDrawable(gif);
} catch (IOException e) {
    e.printStackTrace();
}

【讨论】:

    猜你喜欢
    • 2011-07-02
    • 1970-01-01
    • 2011-03-11
    • 2015-12-27
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    相关资源
    最近更新 更多