0
비트 맵 컨텍스트에서 각 픽셀을 반복하는 방법은 무엇입니까? 나는 이것을하려고 시도하는 것으로 보이는 약간의 근원을 발견했다. 그러나 그것은 어떻게 든 결점이있다. 누군가가이 코드를 수정하여 각 픽셀의 RGBA를 반복 할 수있는 방법을 말해 줄 수 있습니까? 데이터는 다음 화소가있을 것이기비트 맵 컨텍스트에서 각 픽셀의 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;
} CGBitmapContextCreate와
버퍼를 사용하여 픽셀이 RGBA가되도록 1 픽셀이 4 바이트이므로 버퍼를 가리키는 포인터로 볼 수 있습니다. – CiNN
위의 코드를 기반으로이 작업을 수행하는 방법을 가르쳐 주시겠습니까? – RexOnRoids
새 코드가 트릭을 수행하고 pixelBytes로 바이트를 변경하여 unsigned char로 캐스팅 한 것으로 보입니다. 특정 픽셀에 액세스하려면이 공식 (y * 너비) + x – CiNN