并行/并发加载 AWT-Image,然后替换占位符图像
我正在使用 FlyingSaucer,它是一个纯粹基于 java 的 XHTML 渲染器,原生集成到摇摆。 为了显示图像,它提供了 ReplacedElementFactory,它获取 W3C-DOM-Element 并可以用 ReplacedElement 替换它。
显示图像的实现是从 ReplacedElementFactory 返回一个 java.awt.Image,通过 ImageIO.read(..) 加载,然后进行渲染。这意味着整个加载是 EDT 线程中的阻塞操作,加载多个外部图像时冻结 UI...
我想知道如何返回表示“图像正在加载”的 awt.Image,将加载分派到线程然后,我的问题来了,用实际加载的图像替换返回的已渲染的 Placeholder-ImageIsLoading。那么是否有可能改变现有的 awt.Image,然后强制它重新绘制/刷新/其他什么?
有什么建议吗?
I am using FlyingSaucer, an purely java-based XHTML-Renderer which is natively integrated into swing.
To display images it provides a ReplacedElementFactory which gets an W3C-DOM-Element and may replace it with an ReplacedElement.
The implementation to display images is to return an java.awt.Image from the ReplacedElementFactory, loaded via ImageIO.read(..), which is then rendered. This means the whole loading is a blocking-operation in the EDT-thread, freezing the UI when loading multiple external images...
I wonder how I can return an awt.Image representing "image is loading", dispatch the loading to a Thread and then, my problem is arriving, replace the returned, already-rendered Placeholder-ImageIsLoading with the actual, loaded image. So are there any possibilities to mutate an existing awt.Image and then force it to repaint/flush/whatever?
Any advice?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我构建了一个自定义的“图像扩展组件”,并在加载时重新绘制图像,并另外调用 FlyingSaucer 的重新布局方法
I have built a custom "Image extends Component" and repaint the image when loaded and additionally call FlyingSaucer's relayout-method