html2canvas生成图片地址Base64格式转成blob在转成file(二进制)可正常发送(保姆教程,复制粘贴可用)

这篇具有很好参考价值的文章主要介绍了html2canvas生成图片地址Base64格式转成blob在转成file(二进制)可正常发送(保姆教程,复制粘贴可用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开始:                                                  最终结果:          

 文章来源地址https://www.toymoban.com/news/detail-646672.html

 html2canvas生成图片地址Base64格式转成blob在转成file(二进制)可正常发送(保姆教程,复制粘贴可用),javascript,开发语言,ecmascript,前端                                      html2canvas生成图片地址Base64格式转成blob在转成file(二进制)可正常发送(保姆教程,复制粘贴可用),javascript,开发语言,ecmascript,前端

1. html2canvas方法生成的图片地址已Base64编码形式放在img标签src中可直接展示生成的图片(注意页面标签获取位置,还有个setTimeout页面渲染需要时间)

setTimeout(function () {
                var result = {};
                var htmlContent = document.getElementById("cockpit-drag");
                html2canvas(htmlContent,{
                    background:`${htmlContent.style.backgroundImage}`,
                    useCORS: true,
                    // height:'100%',
                // scale: 2, // 处理模糊问题
                // dpi: 300, // 处理模糊问题
                }).then(function (canvas) {
                  var imgData = canvas.toDataURL('image/png');

                  var img = document.createElement("img");
                  img.src = imgData;
                console.log(img);
                  document.body.appendChild(img);
},3000)

2. 直接发给后端存储也可以  但是不严谨而且 Base64编码很长,有一个文件那么长  (正常已二进制file流的形式传输),所以我们要把Base64编码变成二进制流的形式,也是查了很多资料,踩了很多坑,做了很多尝试,最终成功和大家分享一下

   2-1. 需要先把生成的Base64编码转成blob(查了很多,网上这个方法都很统一,所以不会出大问题,以至于这个blob是什么不太懂 , 能用就行呀)

下边是var一个:blob方法 ↓↓↓↓↓↓↓↓↓↓↓↓

  var dataURLtoBlob =   function (dataurl){
        var arr = dataurl.split(','),
            mime = arr[0].match(/:(.*?);/)[1],
            bstr = atob(arr[1]),
            n = bstr.length,
            u8arr = new Uint8Array(n);
       while (n--) {
           u8arr[n] = bstr.charCodeAt(n);
       }
       return new Blob([u8arr], { type: mime })
  }

在这个位置调用   ↓↓↓↓↓↓↓↓↓↓↓↓

html2canvas生成图片地址Base64格式转成blob在转成file(二进制)可正常发送(保姆教程,复制粘贴可用),javascript,开发语言,ecmascript,前端

        2-2. 再把生成的blob转成二进制流(查了很多,网上这个方法都很杂,所以当时很蒙,只能不断尝试,各种踩坑,最终功夫不负有心人)

把blob转成二进制流的方法(这个东西打印有自己的方法,log打印不出来,想提升的同学再去多查查吧,今天不在这里说了

const formData = new FormData()
      formData.append('file',blob) 

直接写在这个位置就能用  ↓↓↓↓↓↓↓↓↓↓↓↓

html2canvas生成图片地址Base64格式转成blob在转成file(二进制)可正常发送(保姆教程,复制粘贴可用),javascript,开发语言,ecmascript,前端

OK,现在二进制流已生成 ,万事俱备(直接把formData作为参数传进接口里就可以用了)

接下来老规矩上完整代码  复制粘贴可用的(我用的是angular项目所以比较老,自己改一下红色方框位置,放接口就好)

图例:html2canvas生成图片地址Base64格式转成blob在转成file(二进制)可正常发送(保姆教程,复制粘贴可用),javascript,开发语言,ecmascript,前端

代码:可复制

setTimeout(function () {
                var result = {};
                var htmlContent = document.getElementById("cockpit-drag");
                html2canvas(htmlContent,{
                    background:`${htmlContent.style.backgroundImage}`,
                    useCORS: true,
                    // height:'100%',
                // scale: 2, // 处理模糊问题
                // dpi: 300, // 处理模糊问题
                }).then(function (canvas) {
                  var imgData = canvas.toDataURL('image/png');
                  var blob = dataURLtoBlob(imgData);

                   const formData = new FormData()
                    formData.append('file',blob) 
                    
                        var xmlhttp = new XMLHttpRequest();
                        xmlhttp.open("POST", url_+"dashboard/uploadImage", false);
                        xmlhttp.send(formData);
                        $scope.$apply(function () {
                            $scope.persistFinish = true;
                        });
                //   var img = document.createElement("img");
                //   img.src = imgData;
                // console.log(img);
                //   document.body.appendChild(img);
                });
              }, 3000)

大功告成,在大前端的路上又有点进步

 

到了这里,关于html2canvas生成图片地址Base64格式转成blob在转成file(二进制)可正常发送(保姆教程,复制粘贴可用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小程序采用html2canvas实现html转canvas保存图片

    mpaas小程序中采用html2canvas实现html转canvas保存图片 使用uniapp将代码打包一份h5部署到服务器 h5要保存的图片组件页面report.vue 安装 npm install --save html2canvas 或 yarn add html2canvas 引入import html2canvas from ‘html2canvas’; ts 小程序中采用webview跳转到h5页面

    2024年02月11日
    浏览(34)
  • html2canvas 下载图片,scale、dpi处理图像模糊

    1、安装html2canvas 依赖 2、 引入html2canvas.js 3、html 4、方法,scale和dpi 解决模糊 html2canvas.js是从git上下载的: https://github.com/eKoopmans/html2canvas/tree/develop/dist 单纯下载图片方法 === 参考: 1、解决html2canvas截图模糊的问题 2、html2canvas生成图片模糊 不清楚?两种解决方法 3、html2canvas在

    2024年02月17日
    浏览(41)
  • 前端html2canvas生成截图【实现步骤与踩坑】

    需求 :点击下载可以导出组件的 截图 及数据信息文件 分析 :前端生成组件截图,带着其他参数传给后端,拿到excel文件并下载。关键在于生成组件的截图,这里通过 html2canvas 插件来实现。 1.下载插件 npm install html2canvas 2.引入 3.通过ref拿到要下载组件的dom元素 4.通过html2ca

    2024年04月11日
    浏览(35)
  • Html2canvas——图片空白的几种排查解决方案

    下列文章来源该篇   一、工作原理 html2canvas库的工作原理并不是真正的“截图”,而是读取网页上的目标DOM节点的信息来绘制canvas,所以它并不支持所有的css属性。 二、在 img标签中加载外部图片 前提是外部图片允许跨域,需要服务器设置 以nginx为例,response-header内要存在

    2024年03月20日
    浏览(36)
  • vue3中,使用html2canvas截图包含视频、图片、文字的区域

    需求:将页面中指定区域进行截图,区域中包含了图片、文字、视频。 第一步,先安装 第二步,在页面引入: 第三步,页面使用: 1)html部分: 2)js部分: 刚开始我截出的图只有文字,插图和视频部分是空白的,并没有将页面的插图和视频截进去,最终发现是 跨域 导致的

    2024年02月06日
    浏览(41)
  • Vue使用html2canvas将DOM节点生成对应的PDF

    要通过Vue使用html2canvas将DOM节点生成对应的PDF,您需要安装html2canvas和jspdf这两个库。html2canvas用于将DOM节点转换为Canvas,而jspdf用于将Canvas转换为PDF。以下是一个简单的示例代码,展示了如何使用html2canvas和jspdf生成PDF文件: 首先,安装html2canvas和jspdf依赖: 然后,在Vue组件中

    2024年02月11日
    浏览(43)
  • 使用nginx+HTML2canvas将任意html网页转为png图片自定义张数

    本文简述如何使用nginx+html2canvas将任意网页html转为png图片 如果是本地网页,直接进行nginx反向代理就行 如果不是本地网页,需要简单利用工具转为本地网页 导入 导入,不能使用在线的库,只能下载到本地才能导入,因为会有同源限制,否则会报跨域错误。 下载导入 由于在

    2024年01月17日
    浏览(42)
  • vue2如何将页面生成 pdf 导出 html2Canvas + jspdf

    npm i html2canvas npm i jspdf import html2canvas from \\\'html2canvas\\\'; import jsPDF from \\\'jspdf\\\' export const htmlToPDF = async (htmlId, title = \\\"报表\\\", bgColor = \\\"#fff\\\") = {   let pdfDom = document.getElementById(htmlId)   pdfDom.style.padding = \\\'0 10px !important\\\'   const A4Width = 595.28;   const A4Height = 841.89;   let canvas = await html2canvas(pd

    2024年02月16日
    浏览(45)
  • (vue)Vue项目中使用jsPDF和html2canvas生成PDF

    效果: 1.:安装jsPDF和html2canvas 2.在需要生成PDF文档的组件中引入jsPDF和html2canvas 解决参考: 1.https://www.jianshu.com/p/31d37bef539b 2.https://www.php.cn/faq/556634.html 3.https://blog.csdn.net/m0_54967474/article/details/123820384

    2024年02月10日
    浏览(40)
  • 【vue-qrcode + html2canvas】前端二维码生成与下载

    其实一开始搜的时候,很多还都是推荐的 vue-qrcode ,于是就先用这个,但是发现想要在二维码中间放一个自定义的image的时候,这个库有点麻烦,需要自己将 image 图片盖在二维码上面(官方教程也是如此)。好吧,一开始我也这么干了,但是盖完之后,我需要下载这个有居中

    2024年04月17日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包