如何从Stream高效动态加载多张图片,解决UI线程卡顿及缓存问题
相册列表自定义流加载缩略图高效实现问题
我需要在列表中加载并展示多张图片,场景为相册列表,每个相册包含多张图片,需在相册列表中展示每个相册前4张图片的缩略图。
如果这些图片是普通URL格式,我只需创建字符串属性设置URL,在XAML中将其绑定到Image的Source属性即可,框架会自动处理图片的加载、渲染,通常还会处理缓存。
但我的技术要求是通过自定义逻辑从Stream加载图片,目前卡在如何在ViewModel中提供Stream,让View仅加载需要展示的图片流,且实现高效加载。我之前尝试在ViewModel中创建BitmapImage,调用其SetSourceAsync方法传入对应流,但要么遇到线程问题(BitmapImage仅允许由创建它的UI线程访问),要么Android端从流加载图片时应用出现卡顿,看起来加载操作还是在UI线程执行。
请问有没有合适的解决方案?如果能实现这些流的缓存就更好了,提前感谢!
2021年1月9日更新
我已经通过Skiasharp渲染位图解决了这个问题。核心方案是创建一个包含SkiasharpSKXamlCanvas的用户控件,拿到流后创建SKBitmap并绘制到Canvas上,目前使用未出现任何问题。
内容的提问来源于stack exchange,提问作者TopperDEL
相关产品推荐
相关产品推荐

