做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

js 計算圖片內(nèi)點個數(shù)的示例代碼

來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 21:59:27
文檔

js 計算圖片內(nèi)點個數(shù)的示例代碼

js 計算圖片內(nèi)點個數(shù)的示例代碼:前言 圖片是由連續(xù)的點信息組成,每個點信息包含四個長度即rgba信息,通過遍歷配合處理函數(shù)實現(xiàn)對點個數(shù)的判斷。 實現(xiàn)思路 本例子采用png格式圖片,只需要判該點透明度(opacity)是否為0即可確定是否為小球上一點,如果不為0,判斷上下左右方向的點是否透
推薦度:
導讀js 計算圖片內(nèi)點個數(shù)的示例代碼:前言 圖片是由連續(xù)的點信息組成,每個點信息包含四個長度即rgba信息,通過遍歷配合處理函數(shù)實現(xiàn)對點個數(shù)的判斷。 實現(xiàn)思路 本例子采用png格式圖片,只需要判該點透明度(opacity)是否為0即可確定是否為小球上一點,如果不為0,判斷上下左右方向的點是否透

前言

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

實現(xiàn)思路

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

具體步驟

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

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

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

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

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

 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);
 }
 }

點的處理函數(shù),根據(jù)圖片的寬和高計算出點的坐標(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繼續(xù)調(diào)用,并且擦出該點信息。

 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,之后該點不會對主循環(huán)的判斷有影響。

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

執(zhí)行4,5,6步驟直至所有點rgba信息都被置為0,主循環(huán)繼續(xù),最后可得到數(shù)量。

總結(jié)

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

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

js 計算圖片內(nèi)點個數(shù)的示例代碼

js 計算圖片內(nèi)點個數(shù)的示例代碼:前言 圖片是由連續(xù)的點信息組成,每個點信息包含四個長度即rgba信息,通過遍歷配合處理函數(shù)實現(xiàn)對點個數(shù)的判斷。 實現(xiàn)思路 本例子采用png格式圖片,只需要判該點透明度(opacity)是否為0即可確定是否為小球上一點,如果不為0,判斷上下左右方向的點是否透
推薦度:
標簽: 圖片 點的 js
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 左贡县| 南通市| 姜堰市| 巩义市| 邯郸市| 望谟县| 弥渡县| 确山县| 运城市| 浦城县| 康平县| 贵阳市| 许昌市| 太白县| 出国| 宿迁市| 马鞍山市| 镇康县| 和静县| 余干县| 万盛区| 会东县| 凯里市| 青阳县| 芜湖县| 乌拉特中旗| 昭平县| 郯城县| 霸州市| 波密县| 永川市| 宿松县| 元朗区| 罗平县| 宜章县| 赣州市| 肇源县| 贞丰县| 衡水市| 炉霍县| 淳安县|