作者sokero (singing)
看板Flash
标题改变ByteArray的元素
时间Wed Apr 29 19:10:11 2009
不好意思@@ 程式码有点长 所以附上档案
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)
1F:推 cjcat2266:splice为定义...就表示他没有提供这个功能给你用呀 04/29 21:19
2F:→ cjcat2266:解决方法就是不要使用splice() 04/29 21:19
3F:→ cjcat2266:要嘛转到Array去用.splice(),要嘛自己写个splice() 04/29 21:19
4F:推 cassatte:为什麽不用 bitmapData? 05/03 11:30
5F:推 cjcat2266:他要做DCT,转成ByteArray运算比较快 05/03 12:07