我的应用程序的一部分包括大量使用具有裁剪、调整大小、过滤器、亮度等功能的图像处理。
在进行图像处理时,是否可以测量 GD 和/或 ImageMajick 的进度?我希望能够通过以下方式呈现进度条客户端:-
- 有关操作的详细信息在客户端收集并发布到服务器
- 在 POST 上,从 0% 开始呈现客户端。
- 服务器运行 GD 或 Imagick 并处理图像,在此期间它将进度更新数据返回给客户端。
- 进度条的进度宽度是用javascript改变的,以反映返回的进度数据。
- 最终,当图像处理过程完成时,新的文件名被发送回客户端并且标签的 src 被更新。
- 在图像上检测到 onload 事件,最后在渲染后,进度条达到 100% 并向用户显示图像。
如果没有可能从 GD 或 Imagick 检索进度数据的方法,任何人都可以提出一种“伪造”的方法吗?
我考虑过在 POST 之前渲染一个空的进度条,一旦操作发生并且客户端接收到 ajax 响应,就将其设置为 70%。然后通过检测 onload 事件在新图像完全加载后最终动画到 100%。
如果这是我唯一的选择,那就这样吧。但这对我来说感觉相当“笨拙”。
有任何想法吗?
编辑- 我刚刚看到 ImageMajick 的命令行版本具有返回进度的选项“-monitor”,所以我可以通过每 50 毫秒左右轮询一次来敲出一些东西。GD 有什么类似的东西,但是我们根据所需的操作同时使用 GD/Imagick。