1、  canvas生成base64数据

canvas.toDataURL()生成的数据可以直接给image对象使用作为<img>显示在前端,也可以传给后台生成图片保存。前端生成保存图片的好像也有,但是比较麻烦,而且不兼容。我记得zip.js就可以在前端打包图片生成压缩包,不过我现在用不到,哪天想到了再整理整理。

        

                 var contain = document.getElementById('contain');

                             var c=document.getElementById("myCanvas");

                             var ctx=c.getContext("2d");

                             c.width=contain.offsetWidth;

                             c.height=contain.offsetHeight;//***根据容器大小设置宽和高

                             ctx.beginPath();

                             ctx.moveTo(0,0);

                             ctx.lineTo(c.width,c.height);

                             ctx.stroke();

                             ctx.closePath();

                             var data = c.toDataURL();

                             console.log(data);

                             var img2 = document.createElement('img');

                             img2.src = data;

                             document.body.appendChild(img2);

但是,使用本地图片绘制的canvas生成base64数据时却会报错,受同源限制,报错如下,如果使用本地服务器就不会报错。

2、  canvas的像素点

获取像素点:ctx.getImageData(x, y, dx, dy)可以获取canvas的像素信息,同样受同源策略限制。参数分别是开始的位置和获取的大小,这个方法返回一个ImageData对象(包括像素信息数组data还有宽高width/height)。

每一个位置的像素点包括r,g,b,a四个通道的值,所以imageData的data是一个像素矩阵,包含所有指定像素点的四个通道信息。

更改像素点:putImageData(imgData, x, y)

          ctx.beginPath();
ctx.moveTo(0,0);
ctx.lineTo(c.width,c.height);
ctx.stroke();
ctx.closePath();
var d = ctx.getImageData(0,0,2,2);//获取像素点
console.log(d);
var imgData = ctx.createImageData(100, 100);
ctx.putImageData(imgData,0,0);//更改像素点

参考:

HTML5画布Canvas图片抽取、像素信息获取、命中检测:https://blog.csdn.net/q1056843325/article/details/54428095

有关Canvas的一点小事—canvas数据和像素点的更多相关文章

  1. 有关Canvas的一点小事—canvas和resize

     之前就说了canvas设置大小的时候用的就是设置实打实的像素值,像图像一样设置百分比然后根据浏览器大小自己适应大小是不可能的——当然一般也不会想要cavans改变大小.不过项目之前有用到过,既然去了 ...

  2. 有关Canvas的一点小事--鼠标绘图

    1.  如何根据鼠标位置获取canvas上对应位置的x,y. 2.  canvas的图糊了,设置宽和高的方式不对. 3.鼠标绘图代码 之前听说过canvas这个元素,但是实际上并没有深入了解过.不过日 ...

  3. 有关Canvas的一点小事—图像绘制

    1.  使用canvas绘制图像 什么是图像?在js中它就是一个<img src=””>,<img>有两种接收图像信息的方法,一个是直接链接到图像地址,一个使用base64数据 ...

  4. 【canvas系列】用canvas实现一个colorpicker

    每个浏览器都有自己的特点,比如今天要做的colorpicker就是,一千个浏览器,一千个哈姆雷特,一千个colorpicker.今天canvas系列就用canvas做一个colorpicker. ** ...

  5. canvas一周一练 -- canvas基础学习

    从上个星期开始,耳朵就一直在生病,里面长了个疙瘩,肿的一碰就疼,不能吃饭不能嗨 (┳_┳)……在此提醒各位小伙伴,最近天气炎热,一定要注意防暑上火,病来如山倒呀~ 接下来我正在喝着5块一颗的药学习ca ...

  6. 【canvas系列】用canvas实现一个colorpicker(类似PS的颜色选择器)

    每个浏览器都有自己的特点,比如今天要做的colorpicker就是,一千个浏览器,一千个哈姆雷特,一千个colorpicker.今天canvas系列就用canvas做一个colorpicker. ** ...

  7. canvas学习笔记:canvas对图片的像素级处理--ImageData的应用

    学习了canvas的基本绘图功能后,惊喜的发现canvas对图片数据也有相当强大的处理功能,能够从像素级别操作位图,当然[lte ie8]不支持. 主要的函数有三个: ctx.createImageD ...

  8. Canvas学习:封装Canvas绘制基本图形API

    Canvas学习:封装Canvas绘制基本图形API Canvas Canvas学习   从前面的文章中我们了解到,通过Canvas中的CanvasRenderingContext2D对象中的属性和方 ...

  9. canvas画画板,canvas画五角星,canvas制作钟表、Konva写钟表

    制作一个画画板,有清屏有橡皮擦有画笔可以换颜色 style样式 <head> <meta charset="UTF-8"> <title>画画板 ...

随机推荐

  1. Linux常用系统管理软件

    1.BleachBit是一款开源的系统清理工具,它可以释放磁盘空间,保护您的隐私,清除缓存,删除cookies.internet历史.临时文件.日志和丢弃的垃圾文件等,支持清除应用的残留数据,切碎文件 ...

  2. monyer教你玩电脑——CSS、HTML、JS、XML的关系

    首先Monyer还是有必要提一句:这是一篇低中等难度的文章.如果你是高手或被认为是高手,那么请pass掉这篇文章:如果你是新手,甚至不知道什么是css(譬如百度模版)等,那么请pass掉这篇文章.谢谢 ...

  3. Copying GC (Part one)

    目录 GC复制算法 copy()函数 将传递给自己的参数复制,然后递归复制其孩子 new_obj()函数 执行过程 缺点 Cheney的GC复制算法 copy()函数 执行过程 被隐藏的队列 优缺点 ...

  4. Linux学习总结(8)——VMware v12.1.1 专业版以及永久密钥

    VMware v12.1.1 专业版以及永久密钥 热门虚拟机软件VMware Workstation 现已更新至v12.1.1 专业版!12.0属于大型更新,专门为Win10的安装和使用做了优化,支持 ...

  5. CSUOJ 1526 Beam me out!

    Beam me out! King Remark, first of his name, is a benign ruler and every wrongdoer gets a second cha ...

  6. HDU——T 1166 敌兵布阵

    http://acm.hdu.edu.cn/showproblem.php?pid=1166 Time Limit: 2000/1000 MS (Java/Others)    Memory Limi ...

  7. Vijos——T 1082 丛林探险

    https://vijos.org/p/1082 描述 东非大裂谷中有一片神秘的丛林,是全世界探险家的乐园,著名黄皮肤探险家BB一直想去试试.正好我国科学家2005年4月将首次对东非大裂谷进行科考,B ...

  8. QT项目升级(QT4.6.3到QT5.2)时,遇到的问题和解决方法

    QT4升级到QT5修改: PC部分: [改QTDIR变量] 在project根文件夹下找到.user文件, 如InnoTabPlugin.vcxproj.user 改动指向你的QT5根文件夹: < ...

  9. [Python] Use Python Classes

    Object oriented classes work much like classes in other languages. Learn how to create them and use ...

  10. jQuery源码05 (3653 , 3797) queue() : 队列方法 : 执行顺序的管理

    //对外接口 jQuery.extend({ queue: function( elem, type, data ) {//入队.元素.队列名字.存进去的函数 //jQuery.queue( this ...