frozenway
V2EX  ›  PHP

PHP 怎么把网页内容生成图片?我想把用户访问特定页面时的网页做个类似快照一样的东西,把此时的网页显示内容生成一个图片 jpg,png,gif 不限,保存起来。请问有这方面的 PHP 程序或插件吗?或者有什么思路去实现?

  •  
  •   frozenway · Oct 23, 2020 · 4441 views
    This topic created in 2206 days ago, the information mentioned may be changed or developed.
    14 replies  •  2020-10-28 14:36:29 +08:00
    hadeswang
    hadeswang
    Oct 23, 2020❤️1
    1
    PhantomJS
    imdong
    imdong
    Oct 23, 2020❤️1
    2
    客户端实现?
    -> 自己控制范围内的网页:除非在客户端安装插件,否则我能想到的就是 `javascript:window.print();`
    -> 不在自己控制范围内的网页:除非在客户端安装插件,否则理论上无法实现。

    服务端实现?
    -> 有一个工具“Puppeteer”?之类的无头浏览器,可以实现服务端截图,但是因浏览器兼容性等差异,与客户端看到的可能不完全一样。

    综上,和 PHP 实现本身没多大关系,或者说单靠 PHP 本身无法实现。
    Evilk
    Evilk
    Oct 23, 2020❤️1
    3
    是不是,类似,点击一下,将页面生成一张图片?,并保存起来?
    4DAX07B8Kle4Dm6T
    4DAX07B8Kle4Dm6T
    Oct 23, 2020❤️1
    4
    可以使用 domtoimage 将 dom 元素转换成图片
    github: https://github.com/tsayen/dom-to-image
    frozenway
    frozenway
    OP
    Oct 23, 2020
    5
    @imdong 是在服务端实现,在网页视图传送到浏览器前
    @Evilk 不是点击,是只要客户点击了访问了链接,程序自动把访问的这条连接的网页内容生产一个图片保存起来
    KasonPasser
    KasonPasser
    Oct 23, 2020❤️1
    6
    可以尝试一下 Dompdf ,把 html 存成 pdf .
    Evilk
    Evilk
    Oct 23, 2020❤️1
    7
    @frozenway 通过点击触发,或者,访问触发,都一样,你可能需要这个( http://html2canvas.hertzen.com)
    frozenway
    frozenway
    OP
    Oct 23, 2020
    8
    @Evilk 谢谢
    wh1012023498
    wh1012023498
    Oct 23, 2020❤️1
    9
    可参考

    https://github.com/puppeteer/puppeteer

    https://github.com/rialto-php/puphpeteer

    use Nesk\Puphpeteer\Puppeteer;

    $puppeteer = new Puppeteer;
    $browser = $puppeteer->launch();

    $page = $browser->newPage();
    $page->goto('https://example.com');
    $page->screenshot(['path' => 'example.png']);

    $browser->close();
    z5864703
    z5864703
    Oct 23, 2020❤️1
    10
    为啥不通过前端来完成呢?调用浏览器 api 截图上传到服务器,也可以做到用户无感
    frozenway
    frozenway
    OP
    Oct 23, 2020
    11
    @wh1012023498 太感谢了
    OldActorsSmile
    OldActorsSmile
    Oct 23, 2020❤️1
    12
    应该是需要一个模拟浏览器去渲染,这个跟 php 关系不大,是 php 通过命令去调用渲染的插件,这种 windows 和 linux 应该都有,我之前看到过,因为没做这种功能,细节忘了
    yuancoder
    yuancoder
    Oct 27, 2020❤️1
    13
    如果有图表之类的,使用 wkhtmltoimage
    xiaociwei
    xiaociwei
    Oct 28, 2020❤️1
    14
    htmltocanvas 可以把简单的页面生成 canvas 图片
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   699 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 19:57 · PVG 03:57 · LAX 11:57 · JFK 14:57
    ♥ Do have faith in what you're doing.