鱼C论坛

 找回密码
 立即注册
查看: 4326|回复: 1

关于canvas的getImageData()函数

[复制链接]
发表于 2018-10-31 11:51:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width">
  6.     <!--<meta name="viewport" content="width=device-width">-->
  7.     <title>鱼C出品</title>

  8. </head>
  9.         <style>
  10.                 canvas{
  11.                         border:1px solid red;
  12.                 }
  13.         </style>
  14. <body>
  15.         <img src="1-9.jpg" id="img"/>
  16.         <canvas id="canvas" width="2000px" height="900px"></canvas>
  17.         <script>
  18.                 var canvas=document.getElementById("canvas");
  19.                 var ctx=canvas.getContext("2d");
  20.                 var img=document.getElementById("img");
  21.                 var particles=[];
  22.                 //img.src="1-9.jpg";
  23.                 img.onload=function(){
  24.                         ctx.drawImage(img,0,0);
  25.                         //ctx.clearRect(0,0,canvas.width,canvas.height);
  26.                         //ctx.fillStyle="rgb(0,128,0)";
  27.                         //ctx.fillRect(200,200,20,20);
  28.                         //var data=imgdata.data;
  29.                         //alert(data[20000]);
  30.                 };
  31.                 var imgdata=ctx.getImageData(0,0,900,800);
  32.                 console.log(imgdata.data);
  33.                 //ctx.clearRect(0,0,canvas.width,canvas.height);
  34.                 function calculate(){
  35.                         var cols=45,rows=40;
  36.                         var s_width=parseInt(900/cols),s_height=parseInt(800/rows);
  37.                         //alert(s_width);
  38.                         var pos=0;
  39.                         var data=imgdata.data;
  40.                         //alert(data[10]);
  41.                         //alert(data.length);
  42.                         for(var i=1;i<=cols;i++){
  43.                                 for(var j=1;j<=rows;j++){
  44.                                         pos=[(j*s_height-1)*900+(i*s_width-1)]*4;
  45.                                         //alert(data[pos]);
  46.                                                 var particle={
  47.                                                         x:900+i*s_width,
  48.                                                         y:j*s_height,
  49.                                                         fillstyle:"rgb("+data[pos]+","+data[pos+1]+","+data[pos+2]+")"
  50.                                                 };
  51.                                                 particles.push(particle);
  52.                                        
  53.                                 }
  54.                         }       
  55.                 }
  56.                 function draw(){
  57.                         //ctx.clearRect(0,0,canvas.width,canvas.height);
  58.                         //alert(canvas.width);
  59.                         for(var i=0;i<particles.length;i++){
  60.                                 ctx.fillStyle=particles[i].fillstyle;
  61.                                 ctx.fillRect(particles[i].x,particles[i].y,2,2);
  62.                                 //alert(particles[i].x+"and"+particles[i].y+particles[i].fillstyle);
  63.                         }
  64.                 }
  65.                 calculate();
  66.                 //alert(particles.length);
  67.                 //ctx.clearRect(0,0,canvas.width,canvas.height);
  68.                 draw();
  69.                
  70.         </script>
  71. </body>
  72. </html>
复制代码


为什么getImageData获得的都是0
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-31 13:40:22 | 显示全部楼层
找到答案了,原来是我在图片没加载完就执行后面的语句了,不过现在又有一个跨域问题,现在只有在本地搭一个服务器才能看见效果i
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-8 01:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表