改變ByteArray的元素

看板Flash作者 (singing)時間16年前 (2009/04/29 19:10), 編輯推噓3(302)
留言5則, 2人參與, 最新討論串1/1
不好意思@@ 程式碼有點長 所以附上檔案 http://www.badongo.com/file/14689918 我想要把加入的圖轉換成discrete cosine transform 在顯示出來 我ㄧ開始在元件庫加入了一張256x256的圖放在secondBitmap 上,然後想要改圖中的每點像素值。所以先寫了一個迴圈 把圖分成8x8的小block var rect:Rectangle = new Rectangle(j*8,i*8,8,8); var bytes:ByteArray = secondBitmapData.getPixels(rect); 因為bytes的length為256=8x8x4(Alpha RGB ) 所以我想應該是bytes[0]~bytes[3]為一點 像素的資料 因此我每隔4個資料取一個數值(每點的R值) for (var m:int=0;m<64;m++ ){ a0.push(bytes[4*m+1]-128); 同樣做 a0~a7 ..} 再放到1個8x8的2維陣列b b[0]=a0; b[1]=a1; 做b[0]~b[7] ..... 再將b內的各點值做discrete cosine transform 後 得到的值放在b[q][r] q,r是對應的index 再取代bytes裡的值 就是把原本的RGB全換成b[q][r] bytes.splice(4*m+1,3,b[q][r],b[q][r],b[q][r]); 但是error出現說bytes.splice未定義 請問得怎麼解決這問題呢? 最後我用 redBitmapData.setPixels(rect,bytes); 這行是想要指定將bytes的數值指定到redBitmapData上 但是執行到這邊都會出現error 謝謝耐心看到這邊的人 請幫小女子解惑 我已經困擾很久了 謝謝~^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.163.154 ※ 編輯: sokero 來自: 140.116.163.154 (04/29 19:51)

04/29 21:19, , 1F
splice為定義...就表示他沒有提供這個功能給你用呀
04/29 21:19, 1F

04/29 21:19, , 2F
解決方法就是不要使用splice()
04/29 21:19, 2F

04/29 21:19, , 3F
要嘛轉到Array去用.splice(),要嘛自己寫個splice()
04/29 21:19, 3F

05/03 11:30, , 4F
為什麼不用 bitmapData?
05/03 11:30, 4F

05/03 12:07, , 5F
他要做DCT,轉成ByteArray運算比較快
05/03 12:07, 5F
文章代碼(AID): #19-3MK67 (Flash)