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

news2024/12/25 9:11:13

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 = base64

				console.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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/751209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是CI/CD?让你的项目变得更加敏捷!

在今天这个快速变化的时代&#xff0c;开发者们需要与时俱进&#xff0c;不断提升自己的工作效率。在这篇文章里&#xff0c;将一起探讨如何使用CI/CD和Github Action让你的项目更加高效&#xff0c;快速响应市场变化。 一、什么是CI&#xff1f; CI&#xff08;持续集成&…

【Java面试丨并发编程】线程的基础知识

一、进程与线程的区别 1. 进程 程序是由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载至CPU&#xff0c;数据加载至内存在指令运行过程中还需要用到磁盘、网络等设备进程就是用来加载指令、管理内存、管理IO的当一个程序被…

青岛大学_王卓老师【数据结构与算法】Week05_08_顺序栈的操作2_学习笔记

本文是个人学习笔记&#xff0c;素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享&#xff0c; 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权&#xff0c;请留言作删文处理。 课程视频链接&#xff1a; 数据结构与算法基础…

C++学习 内存分区模型

内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理。全局区&#xff1a;存放全局变量和静态变量以及常量。栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值&#…

【TI毫米波雷达笔记】DCA1000EVM+mmWave Studio数据采集的MIMO模式设置(多天线发射工作模式)

【TI毫米波雷达笔记】DCA1000EVMmmWave Studio数据采集的MIMO模式设置&#xff08;多天线发射工作模式&#xff09; 以IWR6843AOP为例 其为3发4收的雷达 MIMO模式有两种 TDM-MIMO和BPM-MIMO TDM-MIMO模式&#xff08;时分复用&#xff09; TDM-MIMO模式是最简单和常用的MIM…

Vector - CANoe - CAPL文件加密

目录 为什么会有CAPL文件加密需求? 加密文件介绍 “*.can”和“*.cin” 文件创建 <

win11安装virtual box和vagrant,附带centos7镜像

环境检查 1. 开启CPU虚拟化 修规bios配置 configuration -> Intel Virtual Technology 改为 enabled 2. 关闭hyper-v 以管理员启动 powershell&#xff0c;执行&#xff1a; bcdedit /set hypervisorlaunchtype off 3. 关闭wsl虚拟机 以管理员启动 powershell&#x…

C#探索之路(10):实现一个简单应用的功能——志愿填报

C#探索之路(10)&#xff1a;实现一个简单应用的功能——志愿填报 文章目录 C#探索之路(10)&#xff1a;实现一个简单应用的功能——志愿填报1、前景&#xff1a;2、需求分析3、功能实现3.1、界面交互-输入3.2、界面交互-输出 3、代码示例&#xff1a;4、效果图&#xff1a;5、总…

利用缓存模拟进度条(c实现)

代码如下&#xff1a; #include <stdio.h> #include <Windows.h>int main() {int total 100;int progress 0;char progressBar[101] {};while (progress < total) {progressBar[progress] #;printf("[%-100s] %d%%", progressBar, progress);ffl…

音视频开发实战03-FFmpeg命令行工具移植

一&#xff0c;背景 作为一个音视频开发者&#xff0c;在日常工作中经常会使用ffmpeg 命令来做很多事比如转码ffmpeg -y -i test.mov -g 150 -s 1280x720 -codec libx265 -r 25 test_h265.mp4 &#xff0c;水平翻转视频&#xff1a;ffmpeg -i src.mp4 -vf hflip -acodec copy …

爬虫相关知识与面试题目

常见的反爬虫和应对方法 参考:https://www.cnblogs.com/bsdr/p/5151891.html 0x01 常见的反爬虫 这几天在爬一个网站&#xff0c;网站做了很多反爬虫工作&#xff0c;爬起来有些艰难&#xff0c;花了一些时间才绕过反爬虫。在这里把我写爬虫以来遇到的各种反爬虫策略和应对的…

判断 Mac显卡 mps 是否可以正常运行

文章目录 Mac MPS介绍判断 Mac mps 是否可以正常运行Mac 指定 mps 进行推理示例Mac M1 GPU 训练 相比 CPU 速度提升对比&#x1f4d9; 开心搬砖每一天 Mac MPS介绍 使用 Apple 的 Metal Performance Shaders (MPS) 作为 PyTorch 的后端来启用加速 GPU 训练。 MPS 后端扩展了 P…

SpringBoot源码分析(5)--createApplicationContext创建应用上下文

文章目录 一、前言二、ApplicationContext简述2.1、Spring IOC容器实现方式 三、createApplicationContext/创建应用上下文3.1、DefaultResourceLoader3.2、AbstractApplicationContext3.3、GenericApplicationContext3.3.1、SimpleAliasRegistry3.3.2、DefaultSingletonBeanRe…

ARM中栈的种类与运用

1. 栈的概念 栈&#xff0c;本身是一段内存&#xff0c;程序运行时用于保存一些临时数据&#xff0c;如局部变量、参数、返回地址等等。 学习了数据结构&#xff0c;对栈的概念相信大家都不陌生&#xff0c;后进先出的数据结构&#xff0c;即最后进栈的元素最先出栈。但是在C语…

用html+javascript打造公文一键排版系统5:二级标题排版

公文中二级标题的一般以&#xff08;X&#xff09;标注&#xff08;其中X为由"一二三四五六七八九十"中的字符组成的字符串&#xff09;&#xff0c;用楷体字加粗。 首先我们要判断一段文字是否包含二级标题&#xff0c;最简单的方法 就是判断文字中的头一个字符是否…

springBoot整合二维码

一、引入坐标 <!-- 二维码 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.2.1</version></dependency><dependency><groupId>com.google.zxing</group…

Unhandled error during execution of component event handler at

Unhandled error during execution of component event handler at 执行组件事件处理程序期间出现未处理的错误 在 意思就是有些地方的值用早了,在没有数据之前就使用了 我这次报错是子组件的表单校验 调用事件就报错了 解决方法 setTimeout(() > { //调用方法 }, 0); 就是…

chapter10:SpringBoot与缓存

尚硅谷SpringBoot整合教程 1. JSR107 缓存开发规范&#xff0c;Java Caching 定义了5个核心接口&#xff0c; 分别是CachingProvider&#xff0c;CacheManager&#xff0c;Cache&#xff0c;Entry和Expiry。 CachingProvider&#xff1a;定义了创建&#xff0c;配置&#xff…

【bug】flameshot在ubuntu上的4K屏幕,双屏幕上用不了截图

问题 直接在4K屏幕上运行flameshot截图&#xff0c;直接黑屏 主屏 &#xff1a;4K 副屏&#xff1a;2k 解决 2.1长按1-2秒开机键&#xff0c;先回到桌面。 2.2 设置主屏缩放为125% 2.3 设置键盘快捷键命令为env QT_AUTO_SCREEN_SCALE_FACTOR1 flameshot gui 替代flameshot的…

第51步 深度学习图像识别:Convolutional Vision Transformer建模(Pytorch)

基于WIN10的64位系统演示 一、写在前面 &#xff08;1&#xff09;Convolutional Vision Transformers Convolutional Vision Transformer&#xff08;ConViT&#xff09;是一种结合了卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;简称CNN&#xff09…