ios圖像處理的一些方法

圖像處理是軟件開發(fā)中很重要的一門技術(shù)腺毫,像ps晤硕,各種美顏app,主要就是運用到它钥顽。

在apple相關(guān)開發(fā)領(lǐng)域义屏,圖像處理主要有下面幾種技術(shù):

. 直接修改位圖圖像

. 使用Core Graphics庫

. 使用Core Image庫

. 使用GPUImage第三方庫

. 使用OpenCV第三方庫

其中,直接修改位圖圖像是圖像處理的基礎(chǔ),不管你多高明的算法闽铐,歸根結(jié)底是要修改原圖每個像素的顏色值和透明度蝶怔。

下面的方法創(chuàng)建一個圖片的緩存數(shù)據(jù),把各個像素的顏色值存進一個數(shù)組里以供修改兄墅。

- (void)createImageBuffer:(UIImage*)source{

? ? ? CGImageRef inputImage = source.CGImage;

? ? ? NSUInteger width = source.size.width;

? ? ? NSUInteger height = source.size.height;

? ? ? NSUInteger bytesPerPixel =4;// 每個像素4個字節(jié)表示

? ? ? NSUInteger bytesPerRow = bytesPerPixel * width;

? ? ? NSUInteger bitsPerComponent = 8;// 應(yīng)該是每個顏色通道由8個bit位表示

? ? ? UInt32* pixels;

? ? ? pixels = (UInt32*)calloc(width * height,sizeof(UInt32));

? ? ?CGColorSpaceRefcolorSpace =CGColorSpaceCreateDeviceRGB();

? ? ?CGContextRefcontext =CGBitmapContextCreate(pixels, width, ? ? ?height, bitsPerComponent, bytesPerRow, ? ? colorSpace,kCGImageAlphaPremultipliedLast|kCGBitmapByteOrder32Big);

// 創(chuàng)建一個容器CGBitmapContext,將像素指針參數(shù)傳遞到容器中

CGContextDrawImage(context,CGRectMake(0,0, width, height), inputImage);

// 這句要有踢星,不然數(shù)據(jù)寫不到pixels數(shù)組中

}

pixels數(shù)組里就是圖片數(shù)據(jù),可以通過如下方式修改:

for(NSUIntegerj =0; j < height; j++) {

for(NSUIntegeri =0; i < width; i++) {

UInt32* currentPixel = pixels + (j * width) + i;

UInt32color = *currentPixel;

UInt32thisR,thisG,thisB,thisA;

//這里直接移位獲得RBGA的值

thisR=R(color);

thisG=G(color);

thisB=B(color);

thisA=A(color) *.5;// 這里是通過把每個像素的透明度乘以.5以改變整個圖的透明度

*currentPixel =RGBAMake(thisR, thisG, thisB, thisA);

}

}

修改圖片數(shù)據(jù)后隙咸,可以通過

CGImageRef ref =CGBitmapContextCreateImage(context);

UIImage* image = [UIImageimageWithCGImage:ref];

獲取到修改后的圖片

當(dāng)然沐悦,完成后還要釋放相關(guān)變量

CGColorSpaceRelease(colorSpace);

CGContextRelease(context);

free(pixels);

需要用到這些宏定義:

#define Mask8(x) ( (x) &0xFF)

#define R(x) ( Mask8(x) )

#define G(x) ( Mask8(x >>8) )

#define B(x) ( Mask8(x >>16) )

#define A(x) ( Mask8(x >> 24) )

#define RGBAMake(r, g, b, a) ?( Mask8(r) | Mask8(g) << 8 | Mask8(b) << 16 | Mask8(a) << 24 )

關(guān)于原點坐標(biāo)的問題:

UIImage和UIView使用的是左上原點坐標(biāo),NSImage五督,NSView藏否,Core Image和Core Graphics使用的是左下原點坐標(biāo)

關(guān)于渲染的問題:

1 當(dāng)前屏幕渲染:在GPU的當(dāng)前屏幕緩沖區(qū)中進行的渲染

2 離屏渲染:在GPU當(dāng)前屏幕緩沖區(qū)外另建緩沖區(qū)渲染

3 CPU渲染:如重寫drawRect,用到core graphics技術(shù)繪圖(特殊的離屏渲染)

.. 2比1效率低概荷,因為要新建緩沖區(qū)秕岛,要切換緩沖區(qū)的上下文

.. 3比起1,2误证,缺點是CUP的浮點運算能力比GPU差

.. 盡量用1继薛,對于簡單的效果,3又比2強愈捅,因為運算能力的略勢比不上創(chuàng)建緩沖區(qū)和切換上下文的消耗

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末遏考,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蓝谨,更是在濱河造成了極大的恐慌灌具,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件譬巫,死亡現(xiàn)場離奇詭異咖楣,居然都是意外死亡,警方通過查閱死者的電腦和手機芦昔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門诱贿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咕缎,你說我怎么就攤上這事珠十。” “怎么了凭豪?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵焙蹭,是天一觀的道長。 經(jīng)常有香客問我嫂伞,道長孔厉,這世上最難降的妖魔是什么拯钻? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮烟馅,結(jié)果婚禮上说庭,老公的妹妹穿的比我還像新娘。我一直安慰自己郑趁,他們只是感情好刊驴,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寡润,像睡著了一般捆憎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梭纹,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天躲惰,我揣著相機與錄音,去河邊找鬼变抽。 笑死础拨,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绍载。 我是一名探鬼主播诡宗,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼击儡!你這毒婦竟也來了塔沃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤阳谍,失蹤者是張志新(化名)和其女友劉穎蛀柴,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矫夯,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡鸽疾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了训貌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肮韧。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖旺订,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情超燃,我是刑警寧澤区拳,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站意乓,受9級特大地震影響樱调,放射性物質(zhì)發(fā)生泄漏约素。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一笆凌、第九天 我趴在偏房一處隱蔽的房頂上張望圣猎。 院中可真熱鬧,春花似錦乞而、人聲如沸送悔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽欠啤。三九已至,卻和暖如春屋灌,著一層夾襖步出監(jiān)牢的瞬間洁段,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工共郭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留祠丝,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓除嘹,卻偏偏與公主長得像写半,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子憾赁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容