首页 > 其他分享 >uni-app 中使用 html2canvas 生成图片

uni-app 中使用 html2canvas 生成图片

时间:2024-06-08 19:44:34浏览次数:13  
标签:console log dom app 生成 html2canvas uni 图片

1.在项目中安装 html2canvas 插件

npm install html2canvas -D

在需要生成图片的页面中引入 html2canvas 插件

不过此时需要在 页面中新建一个 script 节点,将 lang 属性设置为renderjs

如对 renderjs 不了解,可看下uniapp 官网的说明

2.编写生成图片的代码

<template>
    <view class="demo">
       
        <button @click="text.onClick">
			生成图片
		</button>
		
		<view class="canvas-module" id="pagePoster">
			<view class="user-info">
		   
				<view class="user-detail">
					<view class="user-name">测试</view>
					<view class="user-num">12345678901</view>
				</view>
			</view>
		
			<view class="section">
				<view class="title">简单介绍</view>
				<view class="detail-text">
				  把我生成图片
				</view>
			</view>
		</view>
		<image :src="posterUrl" style="width: 100%; height: 300px;"></image>
		 
    </view>
</template>
<!-- 普通的script标签 -->
<script>
    export default {
		data(){
            return {
				posterUrl: "",
            }
        },
        methods:{
            // 获取生成的base64 图片路径
            receiveRenderData(val) {
				console.log("调用方法成功")
				var posterUrl = val.replace(/[]/g, ''); // 去除base64位中的空格
				console.log(posterUrl)
                this.posterUrl = posterUrl;
            },
        }
    }
</script>
<!-- renderjs的script标签 -->
<script module="text" lang="renderjs">
	import html2canvas from 'html2canvas'
    export default {
       
		methods:{
			// 生成图片需要调用的方法
			onClick(event, ownerInstance) {
				//console.log("22222")
				setTimeout(() => {
					const dom = document.getElementById('pagePoster') // 需要生成图片内容的 dom 节点
					html2canvas(dom, {
					  width: dom.clientWidth, //dom 原始宽度
					  height: dom.clientHeight,
					  scrollY: 0, // html2canvas默认绘制视图内的页面,需要把scrollY,scrollX设置为0
					  scrollX: 0,
					  useCORS: true, //支持跨域
					  // scale: 2, // 设置生成图片的像素比例,默认是1,如果生成的图片模糊的话可以开启该配置项
					}).then((canvas) => {
						// 生成成功
						console.log("生成成功")
						// html2canvas 生成成功的图片链接需要转成 base64位的url
						ownerInstance.callMethod('receiveRenderData', canvas.toDataURL('image/png'))
					}).catch(err=>{
						console.log("生成图片失败");
					})
				}, 300)
			}
			

           
        }
    }
</script>

  

标签:console,log,dom,app,生成,html2canvas,uni,图片
From: https://www.cnblogs.com/zhangyouwu/p/18238891

相关文章

  • uniapp 中renderjs的使用
    1.cs.vue<template><viewclass="demo"><!--text是renderjsmodule名称--> <view>{{data}}</view><button@click="text.onClick2"> 按钮2 </button> ......
  • Vulnhub靶场:NAPPING: 1.0.1
    1.环境搭建靶机下载:Napping:1.0.1~VulnHub将靶机导入到OracleVMVirtualBox中,网络设置仅主机模式,和kali使用相同的网卡开启靶机2.渗透过程使用nmap工具扫描进行主机发现扫描nmap-sn192.168.56.0/24发现靶机ip地址,使用nmap工具进行端口扫描nmap-sS192.16......
  • 1_关于BeanFactory与ApplicationContext的联系和区别
    BeanFactory与ApplicationContext1.容器和接口1.1BeanFactory与ApplicationContext的联系与区别:ConfigurableApplicationContext是ApplicationContext的子接口,而ApplicationContext接口又是BeanFactory的子接口。因此ConfigurableApplicationContext接口简介继承了Bean......
  • 图文详解Windows系统下搭建mysql开发环境——mysql Community 8 和 navicat Premium 1
    在正式开始学习使用MySQL之前,我们有必要先搭建一个良好的开发环境,让我们的学习和工作效率事半功倍。本文涉及到的软件百度云盘:链接:https://pan.baidu.com/s/1jj_YajEv8adeEjMrXLhOTQ?pwd=1023提取码:1023目录客户机—服务器软件MySQL版本MySQL的下载和安装MySQL服务的......
  • Linux下tcpwrappers防火墙介绍
    tcpwrappers(防火墙)--过滤TCP包头(/usr/sbin/tcpd)/etc/hosts.allow允许/etc/hosts.deny拒绝匹配顺序tcp包头----<wrappers.so>-------/etc/hosts.allow-------/etc/hosts.deny匹配规则<规则马上写,触发的时候,立刻生效>1.先匹配/etc/hosts.allow,如果匹配到相应的......
  • FFmpeg开发笔记(二十七)解决APP无法访问ZLMediaKit的直播链接问题
    ​上一篇文章介绍了如何通过ZLMediaKit实现视频推拉流,并使用VLC播放器验证视频直播地址。即使不用VLC播放器,直接在Qt工程的C++代码中调用FFmpeg的API,也能访问ZLMediaKit的直播地址,并正常渲染视频画面。关于如何在Qt工程中引入FFmpeg,可参考《FFmpeg开发实战:从零基础到短视频上线》......
  • Uniapp 城市选择JSON数据
    [{ "code":"110000", "name":"北京市", "list":[{ "code":"110100", "name":"市辖区", "list":[{ "code":"110101", "name&......
  • Unity 创建一个规范的Package
    为包命名[email protected](字母要小写,@后是包版本号)包的布局Packages├──package.json├──README.md├──CHANGELOG.md├──LICENSE.md├──ThirdPartyNotices.md├──Editor│├──Unity.[YourPackageName......
  • 苹果将推出“Apple Intelligence”AI系统,专注于隐私和广泛应用|TodayAI
    据彭博社报道,苹果公司将在下周的 WWDC2024 开发者大会上揭晓其全新的AI系统——“AppleIntelligence”,该系统将适用于iPhone、iPad和Mac设备。这一新系统将结合苹果自身技术和OpenAI的工具,为用户提供一系列新的AI功能,同时重点关注隐私保护和广泛应用。与其他......
  • 鸿蒙 App 应用开发性能优化全面指南
    优化应用性能对于应用开发至关重要。通过高性能编程、减少丢帧卡顿、提升应用启动和响应速度,可以有效提升用户体验。本文将介绍一些优化应用性能的方法,以及常用的性能调优工具。ArkTS高性能编程为了提升代码执行速度,进而提升应用整体性能,可以采取以下措施:使用ArkTS高性......