有关Canvas的一点小事—canvas数据和像素点

摘要:
varcontain=文档.getElementById;varc=document.getElementById;varctx=c.getContext;c、 width=contain.offsetWidth;c、 height=包含.offsetHeight;//***设置宽度和高度ctx。根据容器大小开始路径();ctx.moveTo(0,0);ctx.lineTo;ctx.stroke();ctx.closePath();vardata=c.至数据URL();控制台日志;variamg2=document.createElement;img2.src=数据;文档.body.appendChild;但是,当使用本地图像绘制的画布生成base64数据时,将报告错误。由于同一来源的限制,错误如下。如果使用本地服务器,则不会报告错误。

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数据时却会报错,受同源限制,报错如下,如果使用本地服务器就不会报错。

 有关Canvas的一点小事—canvas数据和像素点第1张

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数据和像素点》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PyCharm颜色设置SCSF智能客户端学习笔记(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF 2D绘图(1)Shape

Shape画图形 特点: 使用XAML输出 继承自FrameworkElement的,因此拥有了众多的属性和事件 1.Ellipse <Canvas Height="200" Width="250" HorizontalAlignment="Left"> <Ellipse Wi...

Android开发图片分辨率问题解决方案

dpi是什么呢?dpi是“dot per inch”的缩写,每英寸像素数。四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。 dpi计算公式DPI=对角线的像素值/尺寸 手...

各种移动GPU压缩纹理的使用方法

本文系原创整理,欢迎转载,请标明链接 http://www.cnblogs.com/luming1979 有问题欢迎加qq群讨论:366239605   介绍了各种移动设备所使用的GPU,以及各个GPU所支持的压缩纹理的格式和使用方法。1. 移动GPU大全 目前移动市场的GPU主要有四大厂商系列: 1)Imagination Technologies的P...

WebSocket实战

前言 互联网发展到现在,早已超越了原始的初衷,人类从来没有像现在这样依赖过他;也正是这种依赖,促进了互联网技术的飞速发展。而终端设备的创新与发展,更加速了互联网的进化; HTTP/1.1规范发布于1999年,同年12月24日,HTML4.01规范发布;尽管已到2012年,但HTML4.01仍是主流;虽然 HTML5的草案已出现了好几个年头,但转正日期,遥...

让placeholder中的默认文字居中,或者缩进多少像素

直接给input或者textarea的样式加texta-align:center; <input type="" name="" id="" value="" placeholder="信息" /> ::-webkit-input-placeholder { color: #f00; text-align:cente...

canvas基础—图形变换

1、canvas转换方法 1.1canvas转换方法 二、canvas实现图形的中心点旋转 step1:获取canva元素并指定canvas的绘图环境 var canvas=document.getElementById('canvas'); var context=canvas.getContext('2d'); step2:在画布(1...