当前位置: 首页 > news >正文

PhantomJS+java 后端生成echart图表的图片

PhantomJS+java 后端生成echart图表的图片

  • 前言
  • 源码
  • 效果
  • 实现
    • echarts-convert+PhantomJS实现echarts截图得到图片
    • java延时读取base64数据
  • 参考

前言

该项目仅用作个人学习使用

源码

地址
docker镜像: registry.cn-chengdu.aliyuncs.com/qinjie/java-phantomjs:1.0

效果

在这里插入图片描述

实现

该源码主要是在linux环境下运行,因为最终结果是打包成了docker image。本地window运行需要下载PhantomJS的window版本。如下命令window环境下不可直接运行

echarts-convert+PhantomJS实现echarts截图得到图片

  1. webserver启动了一个服务,因为不通过服务的方式会每次都打开phantomjs
  2. 监听端口8081,post请求。接受json body的数据如下。
  3. 其中option中的数据标识echart中的option部分;path标识截图生成的base64将会写入到这个txt中去
{"path": ["/a.txt"],"option": ["var option = {\r\n  xAxis: {\r\n    type: 'category',\r\n    data: ['中国', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\r\n  },\r\n  yAxis: {\r\n    type: 'value'\r\n  },\r\n  series: [\r\n    {\r\n      data: [150, 230, 224, 218, 135, 147, 260],\r\n      type: 'line'\r\n    }\r\n  ]\r\n};"]
}

在这里插入图片描述

  1. 通过如下命令启动一个服务。就是通过phantomjs指定一个js即可。window本地也是类似的
phantomjs-2.1.1-linux-x86_64/bin/phantomjs phantomjs/echarts-convert/server.js

5.window下同样下载个phantomjs,执行同一个server.js一样可以启动一个服务
6.调用后会在参数中:path 路径下生成一个txt,里面保存了base64

java延时读取base64数据

  1. java项目就很简单了,就是读取了指定path下的base64数据

  2. java项目中通过sleep等待了下
    在这里插入图片描述

  3. 因为PhantomJS+webserver截图的时候是异步的,我查了很久没找到能同步办法,所以没办法就这样来实现了

  4. java接口的效果如下
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

参考

  1. https://www.jianshu.com/p/bf92c7ddaa13
  2. 网上一搜一大堆的教程
http://www.lryc.cn/news/139055.html

相关文章:

  • vue3 基础知识 ( webpack 基础知识)05
  • 1.4亿X区智慧城市数字平台及城市大脑(运营中心)建设项目WORD
  • wps 画项目进度甘特图
  • 【⑭MySQL | 数据类型(二)】字符串 | 二进制类型
  • Java smslib包开发
  • 职业技术培训内容介绍
  • AUTOSAR规范与ECU软件开发(实践篇)6.2 ETAS RTA系列工具入门
  • vue3的hooks你可以了解一下
  • 面试之HTTP
  • 测试框架pytest教程(3)夹具-@pytest.fixture
  • GNU make系列之介绍Makefile
  • Java8新特性之——方法引用
  • 等保测评--安全区域边界--测评方法
  • 【Flutter】Flutter 使用 device_info_plus 获取设备的制造商、型号等信息
  • Flink、Yarn架构,以Flink on Yarn部署原理详解
  • 软考高级系统架构设计师系列论文八十三:论软件设计模式的应用
  • CDH集群离线配置python3环境,并安装pyhive、impyla、pyspark
  • python并行操作(基于concurrent.futures.ThreadPoolExecutor)
  • Leetcode.73矩阵置零
  • jdk 04 stream的collect方法
  • 介绍REST API
  • 【leetcode 力扣刷题】反转链表+递归求解
  • 一文读懂Redis配置,史上真香配置
  • maven打出jar中动态替换占位符
  • 【Git游戏】通过游戏重新学习Git
  • 如何通过以太坊JSON-RPC方式获取ERC-20代币的信息?
  • 线性代数的学习和整理4: 求逆矩阵的多种方法汇总
  • 【C#学习笔记】匿名函数和lambda表达式
  • 百度Apollo:引领自动驾驶技术创新的先锋
  • Redis 重写 AOF 日志期间,主进程可以正常处理命令吗?