gpt4 book ai didi

java - 如何释放 Canvas 内存?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:28:27 26 4
gpt4 key购买 nike

我有一个包含 JavaFX Canvas 的对象,我在其上显示图像。对于非常大的图像,例如 4000 x 4000, Canvas 会消耗大量内存。

我想清除内容以便以后重新使用。我该怎么做?

尝试以下方法没有帮助:

canvas.getGraphicsContext2D().clearRect(0, 0, getImage().getWidth(), getImage().getHeight());

最佳答案

最近有关于 openjfx-dev mailing list 的讨论关于向 Canvas 添加方法释放资源——这样的功能,如果实现,将在未来的 JavaFX 版本之前不可用。

作为先前引用线程的结果,已创建以下平台调整请求:RT-32242 Canvas should clear its buffered commands on certain clearRect, fillRect calls (目前计划在 Java 8 版本中实现)。

在此之前,您可能需要创建一个新的 Canvas 节点并将旧节点替换为新节点。

虽然它的功能不如 Canvas,也许使用 WritableImage可能足以满足您的操作,并且可能不会遇到您当前遇到的与 Canvas 相同的内存问题。这是因为 WritableImage 在内部只是像素数据的缓冲区,没有历史记录,而 Canvas 在内部保留了绘制命令的历史记录。

关于java - 如何释放 Canvas 内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18097404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com