#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)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(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), 一種是原版彩色的, 另外一種就是黑白的, 可是對于...
- 學(xué)習(xí)iOS也有一段時間,打算開始寫一些總結(jié)了 這個程度的知識,都是難者不會,會者不難,所有的東西,只要鉆研,都不是...
- 0x00 原理 利用一張圖片事先畫好的圖片(以下稱為蒙板),蓋在要被裁剪的的圖片上,然后遍歷蒙板上的像素點,修改被...