亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

js 計算圖片內點個數的示例代碼

2019-11-19 11:53:49
字體:
來源:轉載
供稿:網友

前言

圖片是由連續的點信息組成,每個點信息包含四個長度即rgba信息,通過遍歷配合處理函數實現對點個數的判斷。

實現思路

本例子采用png格式圖片,只需要判該點透明度(opacity)是否為0即可確定是否為小球上一點,如果不為0,判斷上下左右方向的點是否透明度為0,不為0遞歸該結果,并且將該點的rgba信息置為0;結束后開始下一個主循環并計數,直至循環結束。

具體步驟

創建canvas對象,加載目標圖片,使用canvas的drawImage方法將該圖片對象寫入canvas中;參數為圖片對象,貼圖起點橫坐標,貼圖起點縱坐標,貼圖寬度,貼圖高度。

var canvas = document.createElement('canvas'),var ctx = canvas.getContext('2d');ctx.drawImage(imgObj, 0, 0,imgWidth,imgHeight);

獲取圖片的相關信息canvas的getImageData方法,需要使用圖片上各點的rgba信息;參數為采點起始橫坐標,采點起始縱坐標,采點寬度,采點高度。

var imageData = ctx.getImageData(0,0,width,height);//改寫imageData.data信息實現點的計數

遍歷圖片的點信息imageData.data,四個點為一組增長條件為i+4,當透明度不為0時調用處理函數,并且終止循環(終止循環,防止短時間內循環次數過多造成內存溢出),循環條件為numberStart<imageData.data.length-1 結束,number為最終的點數量;numberStart為上次循環結束時點的索引值,number為點的數量,judgeZero為處理函數。

  function repeateData(){    for(var i=numberStart;i<imageData.data.length;i+=4){      numberStart+=4;      var a = imageData.data[i+3];      if(a != 0) {        judgeZero(i,number);        break;      }    }    if(numberStart<imageData.data.length-1){      repeateData()    }else{      console.log(number);    }  }

點的處理函數,根據圖片的寬和高計算出點的坐標(x,y),并且計算出該點上下左右四個點的透明度信息。

  function judgeZero(index){    number++;    clearPoints(index);  }  function clearPoints(index){    var x = (index/4)%width,      y = Math.floor(index/4/width);    var up = (x+(y-1)*width)*4,      down = (x+(y+1)*width)*4,      right = (x+1+y*width)*4,      left = (x-1+y*width)*4;    var uA = imageData.data[up+3],      bA = imageData.data[down+3],      rA = imageData.data[right+3],      lA = imageData.data[left+3];  }  function clearRgb(index){    imageData.data[index] = 0;    imageData.data[index+1] = 0;    imageData.data[index+2] = 0;    imageData.data[index+3] = 0;  }

判斷四個方向的透明度是否為0,如果為0繼續調用,并且擦出該點信息。

  if(uA != 0){    clearRgb(up);    clearPoints(up);  }  if(bA != 0){    clearRgb(down);    clearPoints(down);  }  if(rA != 0){    clearRgb(right);    clearPoints(right);  }  if(lA != 0){    clearRgb(left);    clearPoints(left);  }

將透明度不為0的所有點信息置為0,之后該點不會對主循環的判斷有影響。

  function clearRgb(index){    imageData.data[index] = 0;    imageData.data[index+1] = 0;    imageData.data[index+2] = 0;    imageData.data[index+3] = 0;  }

執行4,5,6步驟直至所有點rgba信息都被置為0,主循環繼續,最后可得到數量。

總結

主要的原理為獲取球上的一點,通過上下左右遞歸來判斷連續點并消除點信息,至該點的信息已在imageData.data中全部抹去,此過程記為1個點,主循環繼續;圖片為png格式,點的類型不限于圓形;該方法僅供參考。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美午夜美女看片| 日日狠狠久久偷偷四色综合免费| 精品日韩视频在线观看| 亚洲综合色激情五月| 亚洲精品久久久久久久久久久久久| 国产在线精品自拍| 久久久久久香蕉网| 欧美国产日韩一区二区在线观看| 欧美人在线观看| 亚洲xxxx做受欧美| 欧美在线视频免费播放| 国产精品狼人色视频一区| 亚洲专区在线视频| 国产成人一区二| 69久久夜色精品国产69乱青草| 亚洲日韩中文字幕在线播放| 国产精品精品国产| 永久免费精品影视网站| 国产精品网站大全| 亚洲人成在线免费观看| 最新国产精品拍自在线播放| 国产成人黄色av| 日韩一级黄色av| 日韩中文视频免费在线观看| 九九九久久国产免费| 欧美激情性做爰免费视频| 久久久久日韩精品久久久男男| 91超碰中文字幕久久精品| 国产成人精品av在线| 国产亚洲欧美另类中文| 亚洲视频自拍偷拍| 97热精品视频官网| 一本色道久久88亚洲综合88| 日本久久久久久久久| 伊是香蕉大人久久| 5566日本婷婷色中文字幕97| 亚洲精品国产福利| 欧美三级免费观看| 欧美亚洲视频在线观看| 国产成人亚洲综合| 欧美小视频在线观看| 国产精品成人免费电影| 久久精品中文字幕一区| 国产日韩在线观看av| 国产精品亚洲激情| 欧美日韩一区二区三区| 国产69精品99久久久久久宅男| 欧美日韩高清在线观看| 米奇精品一区二区三区在线观看| 欧美乱大交xxxxx| 97人人爽人人喊人人模波多| 亚洲图片欧美午夜| 欧美激情第6页| 最近2019免费中文字幕视频三| 成人福利视频在线观看| 超碰97人人做人人爱少妇| 欧美成人剧情片在线观看| 亚洲春色另类小说| 欧美日韩成人精品| 欧美成人激情在线| 色先锋久久影院av| 久久艳片www.17c.com| 九九热99久久久国产盗摄| 成人福利免费观看| 亚洲欧洲在线免费| 色七七影院综合| 最近中文字幕日韩精品| 欧美片一区二区三区| 亚洲国产成人在线视频| 亚洲小视频在线观看| 成人h片在线播放免费网站| 亚洲精品一区二区三区不| 成人情趣片在线观看免费| 国产精品久久久久久久久久久不卡| 欧美做受高潮电影o| 日韩在线视频二区| 91精品国产免费久久久久久| 插插插亚洲综合网| 亚洲天堂成人在线视频| 国产欧美日韩高清| 全亚洲最色的网站在线观看| 91国产在线精品| 国内外成人免费激情在线视频网站| 日韩日本欧美亚洲| 88国产精品欧美一区二区三区| 激情懂色av一区av二区av| 57pao成人国产永久免费| 日韩久久午夜影院| 午夜精品在线观看| 精品视频久久久| 日韩中文在线视频| 欧美国产精品日韩| 黄色精品在线看| 97精品久久久中文字幕免费| 日韩av电影在线网| 国产精品日韩在线播放| 中文国产成人精品| 4444欧美成人kkkk| 欧美日在线观看| 欧美高清videos高潮hd| 成人福利在线视频| 国产亚洲精品久久久久久牛牛| 亚洲福利精品在线| 亚洲a级在线播放观看| 91免费视频网站| 色综合天天狠天天透天天伊人| 欧美精品999| 亚洲qvod图片区电影| 韩国19禁主播vip福利视频| 午夜精品视频在线| 668精品在线视频| 精品日韩中文字幕| 亚州国产精品久久久| 亚洲黄色www网站| 国产在线日韩在线| 亚洲美女视频网站| 精品调教chinesegay| 欧美激情精品久久久久| 亚洲成av人乱码色午夜| 欧美情侣性视频| 国语自产在线不卡| 日韩电影在线观看免费| 成人自拍性视频| 国产精品久久久久久久app| 精品亚洲一区二区三区| 欧美日韩精品在线| 综合网日日天干夜夜久久| 最近2019中文字幕大全第二页| 国产剧情日韩欧美| 日韩一区二区欧美| 国产一区二区黑人欧美xxxx| 国产精品www网站| 久热精品视频在线观看| 欧美成人在线免费| 精品露脸国产偷人在视频| 中文字幕免费国产精品| 国产精品扒开腿做爽爽爽男男| 国产成人免费av电影| 欧美日在线观看| 日韩在线视频观看| 国产香蕉97碰碰久久人人| 精品国产成人在线| 亚洲欧美综合图区| 久久噜噜噜精品国产亚洲综合| 欧美成人中文字幕在线| 国产精品久久一| 国产精品手机播放| 国产精品va在线播放我和闺蜜| 91精品久久久久久久久| 欧美精品videosex性欧美| 成人在线一区二区| 午夜精品久久久久久久男人的天堂| 国内精品伊人久久| 69精品小视频| 一区二区三区亚洲| 欧美专区在线播放| 欧美成人在线影院| 亚洲人在线视频| 日韩网站在线观看| 欧美日韩国产二区| 在线性视频日韩欧美| 亚洲精品按摩视频| 国产手机视频精品| 中文字幕在线亚洲|