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

html2canvas用法的总结(转载)

最近做h5网页,有个功能是用户能长按页面保存为图片,在我们理解就是网页要生成图片然后再让用户长按保存,然后就发现了html2canvas这个框架了,效果挺不错了,但是有几个坑说一下(用的最新版):

html2canvas($("#pop_predict_img_container")[0], {scale:2,logging:false,useCORS:true}).then(function(canvas) {
var dataUrl = canvas.toDataURL();
$("#predict_img").attr("src",dataUrl).removeClass("hide");
});
scale:是用来调整生成图片屏幕分辨率的,其实设置成1再iphone上生成的图片清晰度没啥问题,但是再有些android手机上就很模糊,所以为了兼顾这部分手机就把scale设置成了2;

useCROS:这个参数是用来设置是否允许使用跨域的图片进行访问的,好像默认就是true,不太记得了;

logging:这个是日志打印的,实际上线当然不需要了,所以就false;

还有一点要说明下,再使用微信的头像的时候生成的图片老是会把头像丢失,其他服务器的图片都可以,尼玛就是想不通,后来就先转成base64放到img标签里面生成图片,就解决了这个问题;

此外,说个canvas将img转base64的问题,如下:

function getBase64Image(imgurl) {
var img = new Image();
img.src = imgurl;
img.setAttribute('crossOrigin', 'anonymous');
img.οnlοad=function(){
var canvas = document.createElement("canvas");
canvas.width = 300;//这个设置不能丢,否者会成为canvas默认的300*150的大小
canvas.height = 300;//这个设置不能丢,否者会成为canvas默认的300*150的大小
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, 300, 300);
var dataURL = canvas.toDataURL("image/png");
console.log(dataURL)
$("#img").attr("src",dataURL);
html2img();
}
}
也是为了解决canvas转base64图片大小不对的问题!
---------------------
作者:show_code
来源:CSDN
原文:https://blog.csdn.net/playboyanta123/article/details/79301050
版权声明:本文为博主原创文章,转载请附上博文链接!

==========================

<template>
<div>
    <img id="canvasImg" :src="Url">
    <canvas id="shareCanvas"  ref="ctD" style="display: none;"></canvas>
</div>
</template>
<script>
export default {
    data(){
        return{
            Url:'',
        }
    },
    mounted(){
        this.initPage(); 
    },
    methods:{
       initPage(){
                //获取canvas标签
                let canvas = this.$refs.ctD;
                //获取 CanvasRenderingContext2D 对象,提供了一组用来在画布上绘制的图形函数
                let ctx = canvas.getContext('2d');
                //引入图像到 canvas
                let img = new Image();   
                img.setAttribute('crossOrigin', 'anonymous'); 
                img.src = 'http://img14.360buyimg.com/uba/jfs/t1/26312/31/1131/18793/5c0f74c9E38f48e2e/ba933120c64dad12.jpg';
                var base64Url = '';
                img.onload = ()=>{
                  ctx.drawImage(img,10,10,100,100);
                  //可填充文字
                  ctx.font = "48px serif";
                  ctx.fillText("Hello world", 10, 50);
                  base64Url = canvas.toDataURL();
                  this.Url = base64Url;
                }
       }
    },
}
</script>

 

转载于:https://www.cnblogs.com/xiaozhumaopao/p/10103937.html

相关文章:

  • Confluence 6 删除一个空间
  • 每天一个设计模式之命令模式
  • ESXi虚拟机的磁盘格式
  • Nmap的详细使用
  • js 如何判断数组元素是否存在重复项
  • Kubernetes高可用负载均衡与集群外服务访问实践
  • K8S-网络模型、POD/RC/SVC YAML 语法官方文档
  • C# 图解教程 第四章 类的基本概念
  • [译] Android 内核控制流完整性
  • codeforces 1093 题解
  • IIS 设备未就绪。
  • 性能常用指标(重点)
  • python的内存回收机制即gc模块讲解
  • 前端工程师的 2018 年总结 | 掘金年度征文
  • 剑指 linux、docker、k8s
  • avalon2.2的VM生成过程
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • iOS 颜色设置看我就够了
  • java概述
  • js数组之filter
  • js算法-归并排序(merge_sort)
  • k8s 面向应用开发者的基础命令
  • Linux链接文件
  • SOFAMosn配置模型
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Vue 动态创建 component
  • 解决iview多表头动态更改列元素发生的错误
  • 面试遇到的一些题
  • 前端知识点整理(待续)
  • 深度学习在携程攻略社区的应用
  • 小程序01:wepy框架整合iview webapp UI
  • 用Canvas画一棵二叉树
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #HarmonyOS:基础语法
  • #pragma预处理命令
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (二)学习JVM —— 垃圾回收机制
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (三)elasticsearch 源码之启动流程分析
  • (转)setTimeout 和 setInterval 的区别
  • **python多态
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .htaccess 强制https 单独排除某个目录
  • .htaccess配置重写url引擎
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .net中的Queue和Stack
  • [AIGC] 如何建立和优化你的工作流?
  • [Android Studio] 开发Java 程序
  • [Flutter] extends、implements、mixin和 abstract、extension的使用介绍说明
  • [IE技巧] IE8中HTTP连接数目的变化