Android 阅读并显示WebP图像
我知道这个问题已经在一些地方提到过(比如),但是有没有一种简单的方法来读取WebP图像,比如使用jar文件 即使是在较旧的设备上,也最好将应用程序的图像大小最小化Android 阅读并显示WebP图像,android,jar,bitmap,webp,Android,Jar,Bitmap,Webp,我知道这个问题已经在一些地方提到过(比如),但是有没有一种简单的方法来读取WebP图像,比如使用jar文件 即使是在较旧的设备上,也最好将应用程序的图像大小最小化 是否可以像使用其他格式一样将WebP inputStream读取到普通位图实例,即使是在较旧的android版本(比ICS更旧)上?您提供的示例非常好,要总结它,您需要遵循以下步骤: 下载webp库,当前版本 在Android“jni”文件夹中创建,将libwep内容复制到其中 在jni/Android.mk中添加: swig/li
是否可以像使用其他格式一样将WebP inputStream读取到普通位图实例,即使是在较旧的android版本(比ICS更旧)上?您提供的示例非常好,要总结它,您需要遵循以下步骤:
- 下载webp库,当前版本
- 在Android“jni”文件夹中创建,将libwep内容复制到其中
- 在jni/Android.mk中添加:
swig/libwebp_java_wrap.c\
到
并删除本地\u SRC\u文件:=\
,将include$(构建静态库)
include$(构建共享库)
- 转到项目目录并运行 /android ndk/ndk构建的路径
- 如果您不知道如何使用ndk,请尝试
- 如果编译成功,则获得libwebp.jar,并将其包含在项目构建路径中
- 在您的活动中,您首先要: 静止的{ 系统加载库(“webp”); }
- 然后,您可以通过InputStream读取.webp文件(即从资产文件夹): InputStream is=getAssets().open(“image.webp”)
- 从下载apache库,并将其包含在项目构建路径中
- 然后可以将InputStream读取到字节数组: 字节[]编码=IOUtils.toByteArray(is)
- 通过libwebp解码文件: int[]宽度=新的int[]{0} int[]高度=新的int[]{0} byte[]decoded=libwebp.WebPDecodeARGB(编码、编码、长度、宽度、高度)
- 转换为位图: int[]像素=新int[decoded.length/4] ByteBuffer.wrap(已解码).asIntBuffer().get(像素) 位图bitamp=Bitmap.createBitmap(像素,宽度[0],高度[0],Bitmap.Config.ARGB_8888)
- 最后一行已形成
- 用位图做任何你想做的事情
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();
}
看起来很酷。迫不及待地想看看。我还可以将webP图像文件放入res/drawable文件夹而不是assets文件夹吗?是的,您可以这样做:drawable drawable=getResources().getDrawable(R.drawable.image);BitmapDrawable bD=(BitmapDrawable)可绘制;位图位图=bD.getBitmap();,字节[]编码=stream.toByteArray();等等……哎呀,我想得还不够。很抱歉无论如何,我不确定其他图像是如何处理的,但这里需要将整个文件加载到字节数组中进行解码。这是正确的吗?其他文件格式也一样吗?这个问题很老了,在支持WEBP文件之前询问如何处理WEBP文件。