php 抓取网页生成图片(基于PHP,将html内容生成图片(PNG,JPEG等))

优采云 发布时间: 2021-09-17 09:02

  php 抓取网页生成图片(基于PHP,将html内容生成图片(PNG,JPEG等))

  在日常工作中有一些要求。简而言之,有些内容需要生成图片。通过Photoshop处理简单的内容是可以的,但它类似于带有表格的内容。每次通过Photoshop处理都是浪费时间。有许多类似于长微博的在线生成工具。生成简单的图片是可以的,但是使用富文本生成图片需要更多的钱。所以我研究了基于PHP的实现

  要求和原则

  基于PHP从HTML内容生成图像(PNG、JPEG等)

  实现方法

  1.直接由图形函数生成

  您可以直接使用PHP附带的GD库或imagick将文本内容转换为图片。这在处理纯文本内容时非常棒,但是处理富文本内容非常困难。目前,painty是开源的,它可以支持几个简单的HTML标记,比如P和img

  2.html->pdf->巴布亚新几内亚

  该方法首先从HTML内容生成PDF文档,然后将PDF文档转换为图片

  HTML到PDF:目前比较成熟的方案有tcpdf、HTML2PDF等,其实HTML2PDF也是tcpdf的核心

  Pdf到PNG:可以通过imagick PHP进行扩展

  目前,基于此方法的开源代码是HTML-to-image,其原理如下图所示

  核心代码是(摘自:)/。获取URL地址的内容

  回显文件获取内容('#39;)

  //将内容转换为PDF文档

  $html2pdf=新的html2pdf('p','A4')

  $html2pdf->writeHTML($html\U内容)

  $file=$html2pdf->输出('temp.pdf','F')

  //将PDF文档转换为图片

  $im=新的imagick('temp.pdf')

  $im->setImageFormat(“jpg”)

  $img_u;name=time()..jpg'

  $im->设置大小(800,600)

  $im->writeImage($img\u name)

  $im->清除()

  $im->销毁()

  这里使用的是HTML2PDF代码。事实上,我个人建议使用tcpdf。毕竟,tcpdf的版本已经更新,功能更加强大。经过实际测试,tcpdf更好地支持中文和HTML格式。相对而言,HTML2PDF有点糟糕。长中文会显示基本错误,例如无法自动自动换行

  但是,同时,这种方法也有很大的缺陷,当插入图片和其他媒体时,往往会出现一页无法放入,需要在另一页上重新排列的问题,因此生成的图片会有很大的空白区域;同时,如果每一页的内容没有完全填充,则生成的piCTURE也有一个很大的空白区域,这是非常不同的美丽

  因此,不建议使用此方法

  3.pass截图

  此方法类似于使用浏览器的截屏功能直接截取URL地址内容的截屏,与前两种方法相比:一是呈现富文本HTML内容更方便、更简单,直接生成HTML代码;二是内容布局更合理,不会产生任何问题PDF文档中的空白区域等问题;第三,对于中温的支持更加友好

  目前,主要的开源项目包括:

  Khtml2png:基于Linux平台,HTML可以转换成图片格式,满足以下要求:G++

  KDE3.x

  KDE的kdelibs3.x(kdelibs4开发)

  zlib(zlib1g开发)

  克马克

  对于服务器,尤其是资源紧张的VP,安装ked成本太高

  Cutycapt及其兄弟版本iecapt:Cutycapt基于Linux和windows平台。iecapt基于windows平台,支持SVG、PS、PDF、iText、HTML、rtree、PNG、JPEG、MNG、tiff、GIF、BMP、ppm、XBM、XPM等格式。易于使用。直接使用以下命令

  注意:windows和Linux平台上的cutycapt可执行命令的情况不一致。/cutycapt--url=--out=example.png

  IECapt--url=--out=localfile.png

  其部署要求是:cutycapt依赖于QT4.4.0+.

  但比khtml2png更好的是它不需要安装X服务器。它可以使用xvfb,一种轻量级的东西,然后像这样使用:xvfb run--server args=“-screen 0,1024x768x24”。/cutycapt--url=…--out=

  通过对各种实现方法的实际比较,我更喜欢cutycapt方法

  通过对各种实现方法的实际比较,我更喜欢cutycapt方法

  具体实施过程

  1、通过嵌入富文本编辑器,提供富文本编辑功能,以及作者信息、版权标记、图片大小格式等的定制

  2、过滤提交的内容,生成HTM/HTML文档,并通过CSS呈现生成的文档内容

  3、通过PHP执行cutycapt命令,获取生成的网页文件的屏幕截图

  在这个阶段,可以完全实现从HTML内容生成图片的功能,但是cutycapt生成的图片会比较大,所以可以进一步优化

  4、通过imagick优化生成的图像

  Imagick具有强大的图像处理功能,可以优化cutycapt生成的图像的质量和大小,同时还可以轻松进行水印等操作

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线