zjupure / GlideWebpDecoder

A Glide WebpDecoder Intergration Library for decoding and displaying webp images
Apache License 2.0
740 stars 91 forks source link

加载一个大图,缩小之后会出现失真的情况 #83

Open w4901 opened 3 years ago

w4901 commented 3 years ago

加载一个大图,缩小之后会出现失真的情况 如果需要,我可以提供一个webp

zjupure commented 3 years ago

提供下sample代码和webp图片,失真的截图。缩小是什么意思

w4901 commented 3 years ago

Glide.with(this).load(R.drawable.head2).into(iv2);
布局代码。 <ImageView android:layout_width="50dp" android:layout_height="50dp" android:id="@+id/image2" android:background="#f00" android:layout_gravity="center" />

w4901 commented 3 years ago

head.webp.zip device-2021-06-25-092733.mp4.zip资源,和图片加载的录屏,加载之后,webp上会出现黑色的横线 缩小就是image的大小比webp大小要小一些,同一个资源,放大就不会有问题 @zjupure

zjupure commented 3 years ago

大致看了下,应该是libwebp降采样解码的bug,需要给google反馈下

w4901 commented 3 years ago

我这边试了一下,renderFrame的时候,先获取原尺寸图,在通过BitmapFactory降低采样率,就不会出这个问题,但是cpu占用相应会高。 image @zjupure

zjupure commented 3 years ago

我这边试了一下,renderFrame的时候,先获取原尺寸图,在通过BitmapFactory降低采样率,就不会出这个问题,但是cpu占用相应会高。 image @zjupure

这样是利用Android Bitmap解码png的能力,不推荐这么做,2次解码了,cpu和性能都有影响;解码原图后,直接Bitmap scale下更快,只是内存占用会多点,缓存有上限,没有极端webp图应该还好。影响你们APP功能使用的话,可以这样改workaround下。 我给google提issue了:https://bugs.chromium.org/p/webp/issues/detail?id=531

w4901 commented 3 years ago

scale 好像也会出现不一样的问题,之前试过了,但是具体效果记不清了。