VUE根据图片做图片形状的词云效果

2024-02-13 17:40

本文主要是介绍VUE根据图片做图片形状的词云效果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

VUE根据图片形状制作词云效果

针筒图片:(是png)

 效果图:(文章底部有完整代码)

限制横竖显示, 在两种颜色中随机。

 

爱心图片:(是白底的png)

效果图:完全随机颜色,看下面代码

 盾牌图片:

 效果图:

使用 echarts-wordcloud

npm install echarts
npm install echarts-wordcloud

 需要注意版本号,echarts-wordcloud 需要是2.0以上,echarts需要是5.0以上

代码:

<template><div class="char2" id="char2" ref="chart"></div>
</template>
<script>import * as echarts from 'echarts';import 'echarts-wordcloud';//转换图片为base64函数function getBase64Image(img) {var canvas = document.createElement("canvas");canvas.width = img.width;canvas.height = img.height;var ctx = canvas.getContext("2d");ctx.drawImage(img, 0, 0, img.width, img.height);var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase();var dataURL = canvas.toDataURL("image/" + ext);return dataURL;}export default {data() {return {worddata: [],image: ""};},mounted() {let list = []let i = 1;for (i; i < 80; i++) {let aa = {name: 'word' + i,value: i}list.push(aa)}this.worddata = list;var image = new Image();image.src = require('@/assets/xin.png');image.setAttribute("crossOrigin", 'Anonymous')image.onload = ()=> {var base64 = getBase64Image(image);this.initCharts(base64); //初始化}},beforeDestroy() {// if (!this.chart) {//   return;// }// this.chart.dispose();// this.chart = null;},methods: {initCharts(base64) {var maskImage = new Image();console.log(base64);maskImage.src = base64console.log(this.worddata);let a = this.$refs.chart;let myChart2 = echarts.init(a);myChart2.setOption({title: {//text: "center"},backgroundColor: "#E6E6FA",tooltip: {},series: [{type: 'wordCloud',shape: 'circle',keepAspect: false,//此处添加图片的base64格式maskImage: maskImage,left: 'center',top: '-15px',width: '98%',height: '100%',right: null,bottom: null,sizeRange: [18, 60],rotationRange: [-90, 90],rotationStep: 45,gridSize: 1,drawOutOfBound: false,layoutAnimation: true,textStyle: {fontFamily: 'sans-serif',fontWeight: 'bold',color: function() {return 'rgb(' + [Math.round(Math.random() * 160),Math.round(Math.random() * 160),Math.round(Math.random() * 160)].join(',') + ')';}},emphasis: {// focus: 'self',textStyle: {textShadowBlur: 5,textShadowColor: '#333'}},//数据data: this.worddata,}, ],});//随着屏幕大小调节图表window.addEventListener("resize", () => {myChart.resize();});//点击事件   myChart2.on('click', function(params) {alert(params.name);});},},};
</script>
<style scoped>.char2 {width: 600px;height: 600px;}
</style>

针筒图片代码:

横竖显示, 在两种颜色中随机。

<template><div class="char2" id="char2" ref="chart"></div>
</template>
<script>import * as echarts from 'echarts';import 'echarts-wordcloud';//转换图片为base64函数function getBase64Image(img) {let width =500;let height =200;var canvas = document.createElement("canvas");// canvas.width = img.width;// canvas.height = img.height;	canvas.width = width;canvas.height = height;var ctx = canvas.getContext("2d");ctx.drawImage(img, 0, 0, width, height);var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase();var dataURL = canvas.toDataURL("image/" + ext);return dataURL;}export default {data() {return {worddata: [],image: ""};},mounted() {let list = []let i = 1;for (i; i < 220; i++) {let aa = {name: 'word' + i,value: i}list.push(aa)}this.worddata = list;var image = new Image();image.src = require('@/assets/msdebookh5/isPublic/zhen4.png');// image.src = require('@/assets/msdebookh5/isPublic/zhen.png');image.setAttribute("crossOrigin", 'Anonymous')image.onload = ()=> {var base64 = getBase64Image(image);this.initCharts(base64); //初始化}},beforeDestroy() {// if (!this.chart) {//   return;// }// this.chart.dispose();// this.chart = null;},methods: {initCharts(base64) {var maskImage = new Image();console.log(base64);maskImage.src = base64// console.log(this.worddata);let a = this.$refs.chart;let myChart2 = echarts.init(a);console.log('myChart2',myChart2);myChart2.setOption({title: {//text: "center"},backgroundColor: "#ffffff",tooltip: {},series: [{type: 'wordCloud',shape: 'circle',keepAspect: false,//此处添加图片的base64格式maskImage: maskImage,left: 'center',top: '-15px',width: '98%',height: '100%',right: null,bottom: null,// sizeRange: [0, 0],sizeRange: [2, 20],rotationRange: [90, 0],// rotationRange: [0, 90],// rotationRange: [-90, 90],rotationStep: 90,gridSize: 1,drawOutOfBound: false,layoutAnimation: true,textStyle: {// fontFamily: 'sans-serif',// fontWeight: 'bold',normal:{color: function() {let arr = ['a', 'b']let index = Math.floor(Math.random() * arr.length)let yanse =  index=='1'?'#38A0E7':'#50C6A3'return yanse;}}},emphasis: {// focus: 'self',textStyle: {textShadowBlur: 5,textShadowColor: '#333'}},//数据data: this.worddata,}, ],});//随着屏幕大小调节图表window.addEventListener("resize", () => {myChart.resize();});//点击事件   myChart2.on('click', function(params) {alert(params.name);});},},};
</script>
<style scoped>.char2 {width: 500px;height: 200px;}
</style>

这篇关于VUE根据图片做图片形状的词云效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/706185

相关文章

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

使用Python实现base64字符串与图片互转的详细步骤

《使用Python实现base64字符串与图片互转的详细步骤》要将一个Base64编码的字符串转换为图片文件并保存下来,可以使用Python的base64模块来实现,这一过程包括解码Base64字符串... 目录1. 图片编码为 Base64 字符串2. Base64 字符串解码为图片文件3. 示例使用注意

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

c/c++的opencv实现图片膨胀

《c/c++的opencv实现图片膨胀》图像膨胀是形态学操作,通过结构元素扩张亮区填充孔洞、连接断开部分、加粗物体,OpenCV的cv::dilate函数实现该操作,本文就来介绍一下opencv图片... 目录什么是图像膨胀?结构元素 (KerChina编程nel)OpenCV 中的 cv::dilate() 函