在即将跨入到2019年时,我接到了一个需求,我们的APP新增了一个分享功能,这个分享功能需要把嵌入在APP里的H5页面转换成图片分享出去。

我们的实现思路是:

用户点击分享按钮时,调用API,将当前页面URL传递给后台,后台将该H5页面转换成图片返回给APP,APP将生成的图片分享到微信。

这里边核心难点是需要将html页面完整完美的转化成图片格式。

经过调研,总结了3种开发难度低、兼容多语言平台的解决方案:

第一种:PhantomJS,强烈推荐

第二种:CutyCapt

第三种:免费或付费现成API,pdfcrowd、web2pdfconvert、url2png

第一种:PhantomJS

PhantomJS是一个用JavaScript编写脚本的无头web浏览器。它可以在Windows、macOS、Linux和FreeBSD上运行。

我们知道,访问一个WEB页面需要经过浏览器的解析,而PhantomJS就很强大了,能够在服务器中虚拟一个浏览器,这样就可以使用后台语言模拟用户在页面的点击操作,因此PhantomJS在自动化测试中应用很广。将html页面转换成图片或者是pdf对PhantomJS来说,简直是小餐一碟。

PhantomJS的官方网站:http://phantomjs.org/

官网的文档相对来说很全面,包括的安装、使用教程、api文档,示例等等。

下面是根据官方示例写的一个简单方法:

var page = require('webpage').create();

var system = require('system');

var address = system.args[1]; // 截图页面地址

var output = system.args[2]; // 保存图片名

page.viewportSize = { width: 414*2, height: 736*2 }; // 页面初始高度

page.open(address, function (status) { // 打开页面

if (status === "success") { // 加载完成

// 通过在JS获取页面的渲染高度

var rect = page.evaluate(function() {

return document.getElementById('html')[0].getBoundingClientRect();

});

// 按照实际页面的高度,设定渲染的宽高

page.clipRect = {

top: rect.top,

left: rect.left,

width: rect.width,

height: rect.height

};

// 预留一定的渲染时间

window.setTimeout(function () {

page.render(output);

// var base64 = page.renderBase64('JPEG');

// console.log(base64);

page.close();

console.log('success');

phantom.exit();

}, 3000);

}

});

比如将上面代码命名为“request.js”,运行时传两个参数,第一个是web url地址,第二个是保持的图片名称:

./bin/phantomjs ./request.js https://www.jianshu.com/u/ebe2021d707c tiantian.jpg

第二种:CutyCapt

CutyCapt是一个跨平台命令行脚本,用于将web页面捕获为各种向量和位图格式,包括SVG、PDF、PS、PNG、JPEG、TIFF、GIF和BMP。

官网:http://cutycapt.sourceforge.net/

根据官网安装成功后运行,如:

CutyCapt --url=https://www.jianshu.com/u/ebe2021d707c --out=tiantian.jpg

第三种:现成API,pdfcrowd、web2pdfconvert、url2png

网络上有很多专门提供将web页面转换成图片的服务商,效果还都不错。

我这里列出来了3个:

pdfcrowd:https://pdfcrowd.com/

web2pdfconvert:https://www.web2pdfconvert.com/to/jpg

url2png:https://www.url2png.com/

这些服务都提供有API接口,可直接调用。

不过,没有白吃的午餐,免费使用有调用频率和数量的限制,要想商用的话就得付费了。

h5页面转png图片_HTML、H5、web转图片image的几种方法总结相关推荐

  1. html界面原型,进行 Web 界面原型设计的一种方法 - JunChen Wu

    Web 界面原型设计的一种方法 进行 Web 界面原型设计常用的工具如下: 白纸.铅笔.橡皮,有时候还需要剪刀.可惜大部分情况下保真度不高而且难以表述页面流程: Word,可以制作 wireframe ...

  2. 公司MSN被禁用,WEB方式登陆MSN的几种方法

    和众多公司一样,MSN被禁用和屏蔽是很平常的事.可中国人毕竟是蛮聪明的,会查找对策,以下方式是我的整理供大家分享: 在公司WEB方式登陆MSN的几种方法: 1. 登陆http://www.ilovei ...

  3. h5页面保存img_如何设计H5编辑器中的模版库并实现自动生成封面图

    往期精选 H5编辑器的图片上传和图片库设计方案 如何实现H5编辑器的实时预览和真机扫码预览功能 在线IDE开发入门之从零实现一个在线代码编辑器 基于React+Koa实现一个h5页面可视化编辑器-Do ...

  4. h5页面不可 移动_七大h5创建工具

    1.maka imo'ka MAKA的官方网站是一个无所不包的平台,可为微信提供可访问的H5页面,微型场景和各种珍贵资产.该平台充满了世界一流的H5模板,海报,节日贺卡,电子相册,创意海报,场景自定义 ...

  5. pc调试微信h5页面提示Pending authentication:please accept debugging session on the device的解决方法

    假如pc调试微信h5页面输入chrome://inspect/#devices无法显示微信h5页面,我升级谷歌浏览器,问题就解决了(方法1) 或者手机的开发者模式关掉再打开(方法2)

  6. H5页面是什么意思?H5游戏怎么做?

    HTML5是一门网页前端开发技术,是第五代HTML标准,可以说H5都是基于HTML5 实现的,包括我们看到的网页,h5技术可以衍生出多种产品,其中包括h5游戏,下面以TOM游戏平台为例,给大家讲解如何 ...

  7. h5页面保存img_从微信H5点击保存图片说起

    微信H5里保存图片,大都是通过长按操作,弹起actionsheet保存照片.但我们的部分用户是老年群体,不知道怎么进行"长按"操作.考虑到这个因素,产品要求实现点击保存按钮来保存图 ...

  8. h5页面上传图片java_[Java教程]h5上传图片及预览_星空网

    h5上传图片及预览 2016-04-22 0 第一次做图片上传,记录一些问题. 1,图片的base64编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址.而网页上的每一个图片,都是需 ...

  9. 图片怎么转换成PDF格式?这两种方法赶紧记下

    怎么把图片转换成PDF文件格式呢?大家在整理很多张图片的时候,对于一些比较粗心的小伙伴来说非常困难,因为太容易出现错误了,不是照片丢失就是排序出现了问题.针对这种问题,有一个很好的解决方法就是将这些图 ...

  10. 图片转PDF格式怎么转换?这三种方法随便用

    图片怎么转换成PDF文件格式呢?大家在日常工作和学习中,也会经常使用到图片,不管是拍照记录还是截图办公,当我们想把这些图片打包发送出去的时候,怎么做才能最简单方便呢?做成文件夹发送还得压缩和解压,比较 ...

最新文章

  1. 通过配置NFS使Ubuntu和海思3559A板子共享目录
  2. 第三周项目一-个人所得税计算器
  3. 【观点】开发人员的测试悖论
  4. python中json模块_Python的标准模块包json的实例用法
  5. [转]OpenContrail 体系架构文档
  6. JVM类加载机制_字节码执行引擎_Java内存模型
  7. 为什么技术团队领导者多是后台开发人员
  8. java数据存在ie中_[Java教程]解决在IE中获取数据的缓存问题,运行环境为node.js
  9. 实践案例 | 数据可视化报表应用
  10. mqtt发布json数据_mqtt应用于进程间通信
  11. jquery中的html代码、文本以及值
  12. 长链剖分算法完整总结
  13. Red Hat 9.0下载及安装
  14. 洛谷-UVA12676 Inverting Huffman(反转树)
  15. C语言中abs()用法及其他绝对值函数
  16. JavaScript验证身份证号码(15位/18位)
  17. java入门学习(三:数据类型)
  18. 微信小程序:Framework inner error FLOW_CREATE_NODE
  19. PS新手淘宝美工常见问题-主图和详情尺寸(一)
  20. Yolo v3的学习

热门文章

  1. Android专利地雷曝光 中国粉丝忧虑情绪蔓延
  2. 数字化时代-8:从三次社会大分工中看一部分人先富起来
  3. 二叉搜索树--基础篇
  4. Node.js+Mongoose实现MondoDB操作
  5. 转码之路——相关课程
  6. 大学java期中考试题目以及自己的解答
  7. 1月30日全国铁路预计发送旅客1007万人次
  8. MobaXterm详细使用教程
  9. 系统架构师之软件工程
  10. HTTP code(状态码)