panpf / sketch

Sketch is an image loading library designed for Compose Multiplatform and Android View. It is powerful and rich in functions. In addition to basic functions, it also supports GIF, SVG, video thumbnails, Exif Orientation, etc.
Apache License 2.0
2.01k stars 307 forks source link

图片编辑后,仍显示编辑前的图片 #113

Closed Pigcasso closed 5 years ago

Pigcasso commented 5 years ago

我的应用场景是在ViewPager中用 SketchImageView 查看图片。用其他应用编辑图片,回到ViewPager显示的是编辑前的图片。我目前的解决方案是禁用内存缓存options.isCacheInMemoryDisabled = false,这种方式简单粗暴。我在用 Glide 加载图片的时候也遇到的同样的问题,我的解决方案是:GlideApp.with(view).load(file).signature(ObjectKey(file.lastModified()))。请问作者的 sketch 有没有类似 Glide 的解决方案?

panpf commented 5 years ago

你编辑的是本地图片文件?编辑后新图片存哪里了?缓存规则就是根据 url 检查内存缓存,如果直接写回原文件的话需要你主动删除这个 url 对应的内存缓存,然后重新显示

Pigcasso commented 5 years ago

编辑的是本地图片文件,用的是一款叫照片编辑器的APP,这个APP可以覆盖原图片。在哪个方法里删除url对应的内存缓存合适的?我现在是在 onResume 中处理的: Jietu20190605-174052

照片编辑器APP: Jietu20190605-174218

panpf commented 5 years ago

你这个情况比较特殊,总之你需要检测到图片变化然后删除内存缓存并重新显示,具体在哪里做这件事情需要你根据你的业务情况决定,我不了解你的业务无法帮你做决定

Pigcasso commented 5 years ago

我的业务逻辑比较简单。点击“其他应用打开”,选择照片编辑器APP,编辑完成后选择覆盖原图,再回到当前页面。请看下图: 涂鸦_Screenshot_2019-06-05-17-53-33-305_果仁相册

panpf commented 5 years ago

这样的话可以这么处理,不过为了效果考虑你可以打开其它应用之前记录一下最后修改时间,回来后对比一下,如果没有改变就不需要刷新了

Pigcasso commented 5 years ago

明白了,谢谢作者大佬👍