小程序画布功能+JAVA用KUMO生成词云图片

KUMO git地址:https://github.com/kennycason/kumo
原理:利用Kumo生成词云,并转换成64位传到小程序,小程序转码64位,并利用画布合成生成图片

先看后台代码

依赖引入(gradle方式,maven的一样)

生成词云代码并转64位

@ResponseBody
@RequestMapping("/test/ciyun")
public String getCloud() throws IOException{ FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();  frequencyAnalyzer.setWordFrequenciesToReturn(600);  frequencyAnalyzer.setMinWordLength(2);  frequencyAnalyzer.setWordTokenizer(new ChineseWordTokenizer()); //引入中文解析器final List<WordFrequency> wordFrequencyList = new ArrayList<>();//随机生成一些文字for(int i=0;i<20;i++) {WordFrequency a = new WordFrequency("哈哈"+i, 1);wordFrequencyList.add(a);}//final List<WordFrequency> wordFrequencyList = frequencyAnalyzer.load("C:\\aaa.txt");  //可以通过加载本地文件来读入文字Dimension dimension = new Dimension(520,520);  //设置图片分辨率  WordCloud wordCloud = new WordCloud(dimension,CollisionMode.PIXEL_PERFECT);  //此处的设置采用内置常量即可生成词云对象  wordCloud.setPadding(5);  //设置边界 Font font = new Font("STSong-Light", 2, 12);  //设置字体2, 1+(int)(Math.random()*(20+1-1))wordCloud.setColorPalette(new ColorPalette(new Color(0x4747EA), new Color(0x408DF1), new Color(0xBBB1FA), new Color(0xABABBA), new Color(0x93DCB8), new Color(0x82E4FF)));  //设置词云显示的三种颜色越靠前设置表示词频越高的词语的颜色  wordCloud.setKumoFont(new KumoFont(font));  wordCloud.setBackgroundColor(new Color(255,255,255));   //设置背景色  wordCloud.setBackground(new CircleBackground(255));   //设置背景图层为圆形  wordCloud.setFontScalar(new SqrtFontScalar(25, 26));  wordCloud.build(wordFrequencyList); //生成词云 File htmlFile = File.createTempFile("temp"+1+(int)(Math.random()*(100000000+1-1)), ".png"); //创建临时文件wordCloud.writeToFile(htmlFile.getCanonicalPath()); //词云图片生成到临时文件中//wordCloud.writeToFile("C:\\qqqq.png"); //词云生成到本地文件中String base64 = getImageStr(htmlFile.getCanonicalPath());deleteFile(htmlFile); // 删除文件return base64;}//图片转64位public String getImageStr(String imgFile) {InputStream inputStream = null;byte[] data = null;try {inputStream = new FileInputStream(imgFile);data = new byte[inputStream.available()];inputStream.read(data);inputStream.close();} catch (IOException e) {e.printStackTrace();}// 加密BASE64Encoder encoder = new BASE64Encoder();return encoder.encode(data);}//删除文件private void deleteFile(File file) { if (file.exists()) {//判断文件是否存在 if (file.isFile()) {//判断是否是文件 file.delete();//删除文件 } else if (file.isDirectory()) {//否则如果它是一个目录 File[] files = file.listFiles();//声明目录下所有的文件 files[]; for (int i = 0;i < files.length;i ++) {//遍历目录下所有的文件 this.deleteFile(files[i]);//把每个文件用这个方法进行迭代 } file.delete();//删除文件夹 } } else { System.out.println("所删除的文件不存在"); }
}

小程序代码

import base64src from '@/utils/base64src'//注意存放目录
const context = wx.createCanvasContext('canvasId');
wx.request({url: ip+'/test/ciyun', //开发者服务器接口地址",method: 'POST',dataType: 'json', //如果设为json,会尝试对返回的数据做一次 JSON.parsesuccess: res => {let array = wx.base64ToArrayBuffer(res)let base64 = wx.arrayBufferToBase64(array)context.setFillStyle('#FFF')context.fillRect(0, 0, 300, 460)context.setFillStyle("#FF6948")context.fillRect(0, 0, 300, 40)context.setFontSize(18)context.setFillStyle("#FFF")context.fillText("2019年度关键词", 20, 25, 300)base64src.base64src(base64,function(path){context.drawImage(path, 0, 50, 300, 300)context.draw()})},fail: () => {},complete: () => {} });
},
//base64src.js文件
const fsm = wx.getFileSystemManager();
const FILE_BASE_NAME = 'tmp_base64src';
export function base64src(base64data,callback) {
const format = "png"
const filePath = `${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME}.${format}`;
const buffer = wx.base64ToArrayBuffer(base64data);
fsm.writeFile({filePath,data: buffer,encoding: 'binary',success() {callback(filePath)},fail() {return (new Error('ERROR_BASE64SRC_WRITE'));},
});
};export default {base64src
}

效果图:

qqqq.png

欢迎评论留言

小程序画布功能+JAVA用KUMO生成词云图片相关推荐

  1. java使用wordcloud生成词云

    1.引入maven依赖 <dependency><groupId>com.kennycason</groupId><artifactId>kumo-co ...

  2. [弹幕词云姬]硬核b站up主一周撸出来的小工具,根据b站弹幕生成词云(一)

    过去一周突然有个很不错的想法,想用b站的弹幕来生成一个词云的效果.于是辛苦奋战一周,大概花了十个小时左右,整出了这个全新的小工具--<词云弹幕姬>访问地址http://danmu.xiez ...

  3. python读取txt文本数据进行分词并生成词云图片

    python对数据分词,生成词云图片 小编在日常生活工作中学习到的点,在此记录一下,希望能够帮助有需要的小伙伴. 文章目录 python对数据分词,生成词云图片 前言 一.全部代码 选用的图片和效果图 ...

  4. java kumo生成词云

    之前有了解python的词云,查了一下java也可以生成 使用kumo就可以轻松生成 pom依赖 <dependency><groupId>com.kennycason< ...

  5. python爬取微博数据词云_用Python爬取微博数据生成词云图片

    原标题:用Python爬取微博数据生成词云图片 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智能BI.大数 ...

  6. python中做为词云轮廓的图片,Python如何生成词云图片

    很早之前写过一篇怎么利用微博数据制作词云图片出来,之前的写得不完整,而且只能使用自己的数据,现在重新整理了一下,任何的微博数据都可以制作出来,放在今天应该比较应景. 一年一度的虐汪节,是继续蹲在角落默 ...

  7. 在线词云加载慢,有水印?作为程序员,教你如何使用Java,Python和JS生成词云!

    声明:本文转载huaairen作者一文<制作词云库图片>,如有侵权,请联系删除. 前言 某天心血来潮,想搞搞词云这玩意,网上很多在线生成词云的网站,但是加载都比较慢,或者有水印,再或者是无 ...

  8. Python 爬金十数据并生成词云

    背景 用 Python 的 requests 模块爬取 金十数据 首页中间部分的资讯信息,练习了两种处理过程:写入 MySQL 数据库和词云分析,对比之下 Python 几行代码就能完成 MySQL入 ...

  9. python爬取QQ空间说说并生成词云

    以下是生成的词云图  我的环境:Mac,Anaconda,Python2.7,以及各种用到的Python库 先来说下Anaconda Anaconda 是一个可用于科学计算的 Python 发行版,支 ...

最新文章

  1. python可视化水平箭头_Python交互图表可视化Bokeh:2. 辅助参数
  2. 【面试宝典】:《深度学习面试指南》重磅开源!
  3. JQuery面试题1
  4. ASP生成随机密码的源代码
  5. 一个Setup Factory的Lua脚本
  6. Mendix:低代码平台四大常见用例开发
  7. python刷b站教程_【Python】【学习资源】B站上的Python学习资源
  8. 易信七夕调查 八成情侣玩转社交软件
  9. iOS开发多线程篇---线程间的通信
  10. 2016 Android Top 10 Library
  11. 大数据学习的思维原理和方法?
  12. 写大数据简历的黄金法则及项目经验
  13. 英文打字训练程序c语言,x86汇编实现英文打字练习软件
  14. mac 上装windows系统 win10 没声音 耳机也没声音
  15. Win10使用说明 - 任务栏设置、触摸板手势和使用偏好
  16. 表单及阿里巴巴矢量图
  17. C语言项目-后宫选妃系统-第三天-终结
  18. 一个有界面的pdf合成工具(python)超级简单实用可做成exe
  19. SLUB和SLAB的区别
  20. C语言程序课程设计—读心术

热门文章

  1. LogicFlow从新手到入门
  2. 重新渲染echarts图形
  3. linux沙盒程序,沙盒应用程序如何?
  4. 流媒体传输 - HLS 协议
  5. 支付宝签名php,支付宝支付之php后台签名实现方法
  6. C语言中的float(单精度浮点数)
  7. 安卓android_rom定制,移植,安卓Android_ROM定制、移植:第一~~八篇(全)
  8. 数据结构——图的邻接表存储
  9. 将Python代码制作成exe程序
  10. P问题,NP问题,NP难问题