2011年6月30日 星期四

取得UIImage的圖素資料,對每一點做修改

簡單記一下.作法    

UIGraphicsBeginImageContext(imgView.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();


unsigned char* data = CGBitmapContextGetData (cgctx);




//offset locates the pixel in the data from x,y. 
//4 for 4 bytes of data per pixel, w is width of one row of data.
int offset = 4*((w*round(point.y))+round(point.x));



這樣就可以用
data[offset+0] ~ data[offset+3] 來取得 point那一點的 ARGB 值.
可以改變內容值..
再以

imgView.image = UIGraphicsGetImageFromCurrentImageContext();

把context指定給imgView就可以看到修改過的.


另外今天在調整alpha值遇到一個狀況..
圖片很多灰色 白色的部份. 在改變 alpha值時 不去改變RGB值
會有一小段過程中變成亮白色閃過...跟一般使用UIView setAlpha過程不一樣
查了很久.. 發現要連RGB一起改,
我是改成 R = R*newAlpha/255  這樣,讓RGB值與alpha的比例相同.
看起來就正常多了.

沒有留言:

張貼留言