【问题标题】:Dynamic image creation动态图像创建
【发布时间】:2010-09-26 14:46:43
【问题描述】:

是否可以将网页的某些部分转换为图像。假设我有一个 div,其中包含文本和图像。我想将整个 div 存储为服务器端的图像,以便我可以从下一次开始使用该图像。

能否告诉我是否有任何 jquery 插件/php 扩展可以做到这一点。我刚刚发现了这个http://www.visionmasterdesigns.com/tutorial-convert-text-into-transparent-png-image-using-php/

但这只是将文本转换为 png。但我想将 a 转换为图像。

提前致谢。

问候, ~沙菲

【问题讨论】:

  • “但我想将 a 转换为图像”中缺少某些内容。 ?

标签: php jquery


【解决方案1】:

您可以使用浏览器引擎将页面呈现为图像,然后剪切页面的请求部分。

我不知道是否有 jquery 或 php 扩展程序可以为您执行此操作,但您可以使用 exec 调用并使用例如 CutyCapt 来呈现页面,并使用图像处理扩展程序来裁剪它。我自己还没有测试过软件,但这是一个开始。

【讨论】:

    【解决方案2】:

    “我有一个示例 div,用户可以对其进行修改。它包含两个图像和一些文本。他可以从我们提供的许多图像中选择图像。最后我想将它存储为一个大图像。 "

    在这种情况下,客户端截屏是错误的做法。您应该允许在用户浏览器上合成图像(听起来您已经完成了这部分),但随后让浏览器发回在服务器上重新创建图像*所需的信息,然后您使用 GD 执行此操作, ImageMagick 或类似的东西。它会在很多方面变得更容易、更清洁和更快:)

    *例如:

    • imageid:7
    • 文本:'废话'
    • 文字颜色:#ffffff
    • 文本大小:3
    • 文本:10
    • 文本:10

    编辑:您可能还应该将引用的部分放入问题中,因为从原始帖子中并不完全清楚。

    【讨论】:

      【解决方案3】:

      你这样做到底想达到什么目的?

      LOLcat 风格的图像字幕?我会使用 Gd2 并直接修改图像。

      简化的网页布局?缓存 div 的源代码可能更快。我还建议手动创建一些并比较生成的文件传输大小,我敢打赌在几乎所有情况下(原始 HTML+图像)都小于(生成的图像)​​。

      【讨论】:

        【解决方案4】:

        我很确定你不能在 JavaScript / jQuery 中做到这一点。无论如何都不是没有一些插件。

        另外,将文本存储为图像听起来有点奇怪。

        【讨论】:

          【解决方案5】:

          您可以调查使用其中一项服务的可能性。他们中的大多数都按照美味的用途做缩略图。但是http://www.webshotspro.com/ 看起来可以做全分辨率的。有没有办法可以使用他们的 API 来获取屏幕截图,然后裁剪出你需要的部分?这真的取决于你在意什么/为什么要捕捉它。

          【讨论】:

            【解决方案6】:

            绝对不要在客户端上这样做,即使有办法(js和canvas元素),你也必须相信客户端(垃圾邮件发送者可以使用它来给你广告而不是你的部分截图),取决于客户的字体、颜色设置等。

            正确的方法是在服务器上,或者调用命令行浏览器,以编程方式获取屏幕截图并关闭它(但这将是非常难以实现,对服务器征税,以及例如,当您清除缓存时会发生这种情况?在热门网站上,所有内容都可以立即重新渲染,并尝试将 100 多个浏览器实例放入 RAM...)。

            我愿意:

            1. 考虑我是否真的需要这样做,以及是否有更好的解决方案来解决最初的问题(您需要将网站的某些部分渲染为图像,究竟为什么?缓存 html 的那部分是否可以解决问题?或 iframe ?)
            2. 如果是,请使用 PHP 支持的图形库,如 GD,您必须自己合成绘图,也许有一些库允许在更高级别上进行此操作(用文本填充布局区域手动逐行拆分,等等...)

            【讨论】:

              【解决方案7】:

              如果你决定渲染一张图片,你必须

              1. 调用独立的网络浏览器,或
              2. 嵌入 (X)HTML 渲染引擎,或
              3. 限制输入选项,以便您可以编写(大大简化的)自定义渲染器,或者
              4. 将工作委托给外部服务

              所有这些都取决于服务器的操作系统、可用的软件以及您拥有的访问权限。

              1. 在 Windows 上:使用 COM 自动化调用 IE; 在 Linux 上:参见 http://www.chimeric.de/blog/2007/1018_automated_screenshots_using_bash_firefox_and_imagemagick

              2. 在 Windows 上:参见 http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.aspx ; 在 Linux 上,请参阅 http://webkit.org/building/build.htmlhttp://khtml2png.sourceforge.net/ 您还可以考虑 PHP-Qt 或 PHP-GTK 绑定。

              希望对您有所帮助。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-10-28
                • 2012-07-30
                • 2013-09-12
                • 2012-01-24
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多