【问题标题】:JQuery image overlay (and get rid of imagecopymerge)JQuery 图像叠加(并摆脱 imagecopymerge)
【发布时间】:2011-01-24 02:08:35
【问题描述】:

在我的项目站点中,我使用 php 函数 imagecopymerge 根据 MySQL 中的表将基本图像(地图)与标记(始终相同但重复)合并。

我想把这个移植到jQuery上,因为图像的刷新非常难看。

您能指导我找到最佳解决方案吗?

非常感谢。

【问题讨论】:

    标签: php javascript jquery image merge


    【解决方案1】:

    我是否认为您有一个通过用户交互更新的静态图像?更新在服务器上得到处理,新的“合并”图像被发送回客户端?

    如果是这种情况,您也许可以用相当多的 jquery 替换它。不过还是会有区别的。

    我会使用以下策略:

    1. 将静态背景图交付给客户端。
    2. 更改当前回传到服务器的任何函数,使其调用 jquery 函数。
    3. 此功能应创建一个新图像(您的标记)并将其放在地图上的适当位置。你应该可以用 css 做到这一点。
    4. 该函数还应跟踪这些标记的位置,以便在用户完成后将它们的位置发送回服务器。

    如果您能准确告诉我您需要做什么,我很乐意提供更详细的建议。

    更新

    好的,根据您的评论,我知道有一个数据库表指示地图的内容。它不一定由当前用户更新,但您经常检查更改。

    您已经在使用 ajax 完成大部分工作,因此更改为 jquery 不会做太多事情。我想也许你只需要想一个新的方法来处理新图像的显示。

    您可以尝试双缓冲技术,将两张图片放在页面的同一位置,在任何时候只有一张正确可见。

    1. 对服务器执行相同的调用以检查更改并检索图像。我假设您正在获取更新图片的新网址,但如果没有,您可能必须这样做。
    2. 更新没有显示在页面上的图片的src
    3. 仅在将其不透明度设置为 0 后才显示隐藏的图像。
    4. 使用 jquery 淡入新图像和淡出旧图像。

    如果处理得当,效果可能更像是地图的平滑更新,而不是闪烁。

    【讨论】:

    • 非常感谢您的回答 :) 通过 AJAX 我轮询数据库以检查表中是否有任何更改。如果有,我调用生成地图和标记合并的 php,并通过回调将其带回。这个想法是对 jQuery 做同样的事情,因为它在浏览器中执行时确实要快得多。我可以用几个标记来做这个吗?谢谢
    • 嗨,charo,我已经更新了我的答案,给你另一个建议。
    • 太棒了!这是一个非常有用的技巧。实际上,我在 php url 请求中使用了随机盲和参数来覆盖浏览器的缓存,因此您的双缓冲技术实现了一半。所以我必须使用 jQuery 来更新它……是的,这很有效,而且看起来很优雅。非常感谢Damovisa!
    • 很高兴为您提供帮助 - 请告诉我进展如何!
    • 太棒了!我在另一个 div 中使用了两个 div 将一个图像覆盖在另一个图像上。由于最新的被绘制在顶部,因此主动隐藏最旧的似乎是不必要的。在每次迭代中,它们中的一个都会被销毁。获得平滑更新的好技术,不仅适用于图像。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    相关资源
    最近更新 更多