#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 )
//圖片顏色漸變
- (void)imagePifex
{
// 1. Get the raw pixels of the image
//定義最高32位整形指針 *inputPixels
UInt32 * inputPixels;
//轉(zhuǎn)換圖片為CGImageRef,獲取參數(shù):長寬高,每個像素的字節(jié)數(shù)(4)忌锯,每個R的比特數(shù)
CGImageRef inputCGImage = [self.image CGImage];
NSUInteger inputWidth = CGImageGetWidth(inputCGImage);
NSUInteger inputHeight = CGImageGetHeight(inputCGImage);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
NSUInteger bytesPerPixel = 4;
NSUInteger bitsPerComponent = 8;
//每行字節(jié)數(shù)
NSUInteger inputBytesPerRow = bytesPerPixel * inputWidth;
//開辟內(nèi)存區(qū)域,指向首像素地址
inputPixels = (UInt32 *)calloc(inputHeight * inputWidth, sizeof(UInt32));
//根據(jù)指針杨刨,前面的參數(shù)丛塌,創(chuàng)建像素層
CGContextRef context = CGBitmapContextCreate(inputPixels, inputWidth, inputHeight,
bitsPerComponent, inputBytesPerRow, colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
//根據(jù)目前像素在界面繪制圖像
CGContextDrawImage(context, CGRectMake(0, 0, inputWidth, inputHeight), inputCGImage);
//接來下就是重點了:聿薄!!像素處理--------------------------------------------------------
for (int j = 0; j < inputHeight; j++) {
for (int i = 0; i < inputWidth; i++) {
UInt32 * currentPixel = inputPixels + (j * inputWidth) + i;
UInt32 color = *currentPixel;
UInt32 br,thisR,thisG,thisB,thisA;
//這里直接移位獲得RBGA的值,以及輸出寫的非常好!
thisR=R(color);
thisG=G(color);
thisB=B(color);
thisA=A(color);
//NSLog(@"%d,%d,%d,%d",thisR,thisG,thisB,thisA);
*currentPixel = RGBAMake(thisR, thisG, thisB, thisA);
}
}
//創(chuàng)建新圖
// 4. Create a new UIImage
CGImageRef newCGImage = CGBitmapContextCreateImage(context);
UIImage * processedImage = [UIImage imageWithCGImage:newCGImage];
//釋放
// 5. Cleanup!
CGColorSpaceRelease(colorSpace);
CGContextRelease(context);
free(inputPixels);
self.image = processedImage;
}
iOS 圖片像素處理
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門几迄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冰评,你說我怎么就攤上這事映胁。” “怎么了甲雅?”我有些...
- 文/不壞的土叔 我叫張陵解孙,是天一觀的道長。 經(jīng)常有香客問我抛人,道長弛姜,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任妖枚,我火速辦了婚禮廷臼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绝页。我一直安慰自己荠商,他們只是感情好,可當我...
- 文/花漫 我一把揭開白布抒寂。 她就那樣靜靜地躺著结啼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪屈芜。 梳的紋絲不亂的頭發(fā)上郊愧,一...
- 文/蒼蘭香墨 我猛地睜開眼盒发,長吁一口氣:“原來是場噩夢啊……” “哼例嘱!你這毒婦竟也來了狡逢?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布窒盐,位于F島的核電站,受9級特大地震影響钢拧,放射性物質(zhì)發(fā)生泄漏蟹漓。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一源内、第九天 我趴在偏房一處隱蔽的房頂上張望葡粒。 院中可真熱鬧,春花似錦膜钓、人聲如沸嗽交。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽夫壁。三九已至,卻和暖如春沃疮,著一層夾襖步出監(jiān)牢的瞬間盒让,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- iOS中圖片相關(guān)的內(nèi)容非常多,iOS中的圖片相關(guān)的API也非常多,從UIKit中的UIImage,到CoreGra...
- 先上圖片處理的前后效果對比: 最近項目需要,圖片顯示兩種狀態(tài), 一種是原版彩色的, 另外一種就是黑白的, 可是對于...
- 學習iOS也有一段時間同木,打算開始寫一些總結(jié)了 這個程度的知識浮梢,都是難者不會,會者不難泉手,所有的東西黔寇,只要鉆研,都不是...
- 0x00 原理 利用一張圖片事先畫好的圖片(以下稱為蒙板)斩萌,蓋在要被裁剪的的圖片上,然后遍歷蒙板上的像素點屏轰,修改被...