阅读并显示WebP图像



我知道这个问题已经在一些地方提到了(比如这里),但有没有一种简单的方法可以读取WebP图像,比如使用jar文件?

即使在旧设备上,也能最大限度地减少应用程序的图像大小。

是否可以像使用其他格式一样,甚至在旧的android版本(比ICS旧)上,将WebP inputStream读取到普通位图实例?

您提供的示例非常好,为了总结它,您需要遵循以下步骤:

  • 在此处下载当前版本的webp库
  • 在Android"jni"文件夹中创建,将libwep内容复制到其中
  • 在jni/Android.mk中添加:

    swig/libwebp_java_wrap.c\

    LOCAL_SRC_FILES := 并删除include $(BUILD_STATIC_LIBRARY),改为include $(BUILD_SHARED_LIBRARY)

  • 转到您的项目目录并运行

    /安卓ndk/ndk构建的路径

  • 如果你不知道如何使用ndk,试试这里的

  • 如果编译成功,您将获得libwebp.jar,并将其包含在项目构建路径中

  • 在你的活动中,你首先放:

    静态的{System.loadLibrary("webp");}

  • 然后您可以通过InputStream(即从资产文件夹)读取.web文件:

    InputStream为getAssets().open("image.web");

  • 从这里下载apache库,将其包含在项目构建路径中

  • 然后您可以将InputStream读取到字节数组:

    byte[]encoded=IOUtils.toByteArray(is);

  • 通过libwebp:解码文件

    int[]width=new int[]{0};

    int[]height=new int[]{0};

    byte[]解码=libwebp。WebPDecodeARGB(编码,编码。长度,宽度,高度);

  • 转换为位图:

    int[]像素=新的int[解码长度/4];

    ByteBuffer.wrap(解码).asIntBuffer().get(像素);

    Bitmap bitamp=Bitmap.createBitmap(像素,宽度[0],高度[0],Bitmap.Config.ARGB_8888);

  • 最后一行在此形成

  • 你可以随心所欲地使用位图。

如果您的webp图像存储在assets文件夹中,则使用此代码读取并显示在imageView 中

try {
            InputStream inputStream = context.getAssets().open("yourfilename.webp");
            BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
            Bitmap bmp = BitmapFactory.decodeStream(bufferedInputStream);
            imageView.setImageBitmap(bmp);
           
        } catch (IOException e) {
            e.printStackTrace();
        }

相关内容

  • 没有找到相关文章

最新更新