【问题标题】:Crawling custom URL's for images and resizing them via AJAX抓取图像的自定义 URL 并通过 AJAX 调整它们的大小
【发布时间】:2011-10-25 02:20:38
【问题描述】:

我正在构建一个网络应用程序,用户可以在其中存储链接,并关联 200x200 的图片。默认情况下,我想抓取图像的链接,然后返回最大的缩略图(用户可以从中选择“官方”缩略图)。我希望这一切都通过 AJAX 发生。我的问题是:最好的方法是什么?

目前,我正在使用 PHP Simple HTTP Parser 来扫描 URL。然后我找到所有<img> 标签的src 属性,使用getimagesize 存储位于该URL 的图像大小,从最大到最小对数组进行排序,并通过AJAX 将前5 个最大的图像URL 返回给客户端.然后客户端为每个请求发送不同的 AJAX 请求,使服务器端 ImageMagick 脚本下载并将图像剪切为缩略图,将其保存在临时文件夹中,然后返回此缩略图的 URL,客户端最终将其加载到他的浏览器。

不用说,这有点复杂,而且可能效率很低。在http://en.wikipedia.org 上运行此过程从开始到结束大约需要 10-15 秒。但是,我不确定是否有更有效的方法。

【问题讨论】:

    标签: php javascript ajax imagemagick thumbnails


    【解决方案1】:

    我会在一个 AJAX 请求中执行此操作,脚本会在第一遍自动调整最大 5 个图像的大小,保存它们,并返回一个 JSON 数组,其中包含为客户端调整大小的图像 URL。

    【讨论】:

    • 我最初是这样做的,但我希望异步调整图像大小,这样用户就不必等待所有图像都完成后才能看到它们。这是个坏主意吗?即使我修改脚本只为一张图片发送一个请求,它仍然需要大约 10 秒。
    • 那么问题就出在你的 PHP 脚本上。尝试分析它以查看瓶颈在哪里,无论是图像大小调整还是 HTML 解析还是其他。
    【解决方案2】:

    您可能应该使用 PHP 的 DOMDocument 类来抓取/解析 html 页面。

    getimagesize() 表示您必须下载每个图像并进行处理。也许您应该考虑简单地向用户显示所有图像,只需放置链接回原始 HTML 页面的 img 标记。您可以根据自己的喜好调整这些标签的大小。这样,您不必下载/处理单个图像,直到用户实际为缩略图选择了一个图像。

    【讨论】:

      【解决方案3】:

      对您是否/如何解决这个问题感兴趣?

      最后,我通过 getimagesize() 循环遍历图像,直到高度和宽度都超过一定大小,然后中断循环。

      这种方式效率稍高一些,因为它只下载所需数量的图像

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-26
        • 1970-01-01
        • 2011-10-24
        • 1970-01-01
        • 2015-05-05
        • 2010-12-29
        • 2013-07-04
        相关资源
        最近更新 更多