2009-08-29 21 views
0

ビットマップコンテキストで各ピクセルを反復処理するにはどうすればよいですか?私はこれをしようとしているようだが、それは何らかの欠陥があるいくつかのソースを見つけた。誰かがこのコードを修正して各ピクセルのRGBAを繰り返し処理する方法を教えてもらえますか? CGBitmapContextCreateとビットマップコンテキストで各ピクセルのRGBAを反復処理するにはどうすればよいですか?

-(UIImage*)modifyPixels:(UIImage*)originalImage 
{ 

NSData* pixelData = (NSData*)CGDataProviderCopyData(CGImageGetDataProvider(originalImage.CGImage)); 
void* pixelBytes = [pixelData bytes]; 

// Take away the red 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] = bytes[i+2]; // blue 
     bytes[i+3] = bytes[i+3]; // alpha 
    } 

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

    return newImage; 

}

答えて

2

、その後、あなたのピクセルはそれになり、データのバッファを提供します。
link

+0

バッファを使用すると、ピクセルはRGBAなので、1ピクセルは4バイトなので、バッファへのポインタでそれを歩くことができます。 – CiNN

+0

上記のコードに基づいてこれを行う方法を教えてください。 – RexOnRoids

+0

あなたの新しいコードは、このトリックを行い、pixelBytesでバイトを変更し、それをunsigned charとしてキャストするようです。特定のピクセルにアクセスしたい場合は、この式があります(y *幅)+ x – CiNN

関連する問題