2009-11-26 3 views

답변

3

마찬가지로 this.

UIImage* image = ...; // An image 
NSData* pixelData = (NSData*) CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage)); 
void* pixelBytes = [pixelData bytes]; 

//Leaves only the green pixel, assuming 32-bit RGBA 
for(int i = 0; i < [pixelData length]; i += 4) { 
     bytes[i] = 0; // red 
     bytes[i+1] = bytes[i+1]; // green 
     bytes[i+2] = 0; // blue 
     bytes[i+3] = 0; // alpha 
    } 

NSData* newPixelData = [NSData dataWithBytes:pixelBytes length:[pixelData length]]; 
UIImage* newImage = [UIImage imageWithData:newPixelData]; 

here에서 적응 : 세 번째 대답 편집증 세부
에서 그리고 픽셀을 액세스하고 새로운있는 UIImage로 저장을위한 몇 가지 코드 -

는 또한, this question에서 봐. 세 개의 별개 채널을 별도의 이미지로 만들려면 코드에서와 같이하고 매번 저장하려는 채널을 제외하고 모두 0으로 설정 한 다음 새 이미지를 만듭니다.

+0

감사합니다. 거의 없지만 이미지를 만드는 방법이 나와 있지 않습니다. – SpaceDog

+0

원래의 알파를 존중하는 R, G, B 각 채널당 3 개의 이미지를 만들어야합니다. – SpaceDog

+0

새 링크로 편집 중 ... – luvieere

관련 문제