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

前端canvas对象转成file对象

import html2canvas from 'html2canvas'export default {methods: {//canvas对象转成file对象canvasToFile() {html2canvas(this.$parent.$refs['mapPanel'].$el,{width: this.$parent.$refs['mapPanel'].$el.clientWidth - 600// height:''}).then(canvas => {const base64Data = canvas.toDataURL('image/png')const blob = this.base64ToBlob(base64Data)// 1000到10000的随机整数(四位数)let fileName = Math.floor((Math.random() * (10000 - 1000))) + 1000 fileName += '_'+this.form.markName + '.png'// 将Blob对象转换为File对象const file = new File([blob], fileName, { type: 'image/png' })})},// Base64字符串转换为二进制数据base64ToBlob(base64Data) {let byteString = base64Dataif (base64Data.split(',')[0].indexOf('base64') >= 0) {byteString = atob(base64Data.split(',')[1]) // base64 解码} else {byteString = unescape(base64Data.split(',')[1])}// 获取文件类型const mimeString = base64Data.split(';')[0].split(':')[1] // mime类型// ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区// let arrayBuffer = new ArrayBuffer(byteString.length) // 创建缓冲数组// let uintArr = new Uint8Array(arrayBuffer) // 创建视图const uintArr = new Uint8Array(byteString.length) // 创建视图for (let i = 0; i < byteString.length; i += 1) {uintArr[i] = byteString.charCodeAt(i)}// 生成blobconst blob = new Blob([uintArr], {type: mimeString})// 使用 Blob 创建一个指向类型化数组的URL, URL.createObjectURL是new Blob文件的方法,可以生成一个普通的url,可以直接使用,比如用在img.src上return blob}}}

详细内容:https://docs.pingcode.com/baike/2237480

http://www.lryc.cn/news/522328.html

相关文章:

  • mermaid大全(语法、流程图、时序图、甘特图、饼图、用户旅行图、类图)
  • 运行fastGPT 第四步 配置ONE API 添加模型
  • Spring Initializr创建springboot项目 “java: 错误: 无效的源发行版:19”
  • Java IDEA中Gutter Icons图标的含义
  • 如何进行域名跳转与域名重定向的综合指南
  • YOLOv10-1.1部分代码阅读笔记-build.py
  • redux 结合 @reduxjs/toolkit 的使用
  • tui-editor报错
  • 运行fastGPT 第二步 安装宝塔面板 用于管理安装docker和其文件
  • 常见好用的PHP CMS开源系统有哪些?
  • 【排错记录】免密、nginx、cgroup、sshd
  • 浅谈云计算19 | OpenStack管理模块 (上)
  • LabVIEW 程序中的 R6025 错误
  • 【认识油管头部频道】ep5 “5-Minute Crafts”——DIY 和生活技巧
  • HarmonyOS应用开发者初级认证最新版– 2025/1/13号题库新版
  • improve-gantt-elastic(vue2中甘特图实现与引入)
  • 【k8s面试题2025】1、练气期
  • SpringBoot源码解析(七):应用上下文结构体系
  • SpringSecurity-前后端分离
  • sparkRDD教程之基本命令
  • Linux:SystemV通信
  • C#上位机通过CAN总线发送bin文件
  • CV 图像处理基础笔记大全(超全版哦~)!!!
  • 2-Kbengine+Unity3D多人在线游戏DEMO源码架构分析
  • Vue.js组件开发-如何实现表头搜索
  • lerna使用指南
  • spark,读取和写入同一张表问题
  • iOS - TLS(线程本地存储)
  • node.js项目依赖关系分析工具 Depazer 的使用
  • QT 如何禁止QComboBox鼠标滚轮