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. visual studio 添加库文件

    我在visual studio中使用OpenGL时需要添加额外的库 一 首先下载库文件,里面将会有一些.h文件和.lib文件,打开visual studio安装目录下打开: D:\program\VS ...

  2. 【Django】Cookie

    目录 Cookie介绍 操作Cookie 获取Cookie 设置 Cookie 删除Cookie @ Cookie介绍 Cookie的由来 大家都知道==HTTP协议是无状态的==. ==无状态的的意 ...

  3. CodeForcesGym 100502K Train Passengers

    Train Passengers Time Limit: 1000ms Memory Limit: 524288KB This problem will be judged on CodeForces ...

  4. [Python] Create a Log for your Python application

    Print statements will get you a long way in monitoring the behavior of your application, but logging ...

  5. Ubuntu中的解压缩文件的方式

    记录Ubuntu下各种压缩和解压方式: .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) -- ...

  6. spring 使用c3po连接池

    1 数据源:能够简单理解为数据的来源. 2 连接池:是缓存一定数量的数据库连接,当程序须要数据库连接的时候,直接在连接池中获取空暇的连接,使用完再放回连接池中,此连接又变成空暇状态,等待下一次连接. ...

  7. 为SSD编程(4)——高级功能和内部并行

    原文 http://codecapsule.com/2014/02/12/coding-for-ssds-part-4-advanced-functionalities-and-internal-pa ...

  8. 《从0到1》读书笔记第2章&quot;像1999 年那样狂欢&quot;第1记:小结及词汇解析

    小结 本章的目的应该是通过90年代末的互联网泡沫的背景,成因.影响,以及教训来教诫人们,在全部人都疯狂的抛身于洪流热潮之中时,我们要冷静的思考辨识出那些不切实际的大众观点,找到隐藏在这些观点后面的反主 ...

  9. es65 跨模块常量

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. css+ js 实现圆环时钟

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...