알파 채널없이 이미지에 대한 작동 코드를 다음과 같습니다
: 내가 그레이 스케일 이미지에 RGB 이미지를 변환이 코드와
CGImageRef c = [[UIImage imageNamed:@"100_3077"] CGImage];
size_t bitsPerPixel = CGImageGetBitsPerPixel(c);
size_t bitsPerComponent = CGImageGetBitsPerComponent(c);
size_t width = CGImageGetWidth(c);
size_t height = CGImageGetHeight(c);
CGImageAlphaInfo a = CGImageGetAlphaInfo(c);
NSAssert(bitsPerPixel == 32 && bitsPerComponent == 8 && a == kCGImageAlphaNoneSkipLast, @"unsupported image type supplied");
CGContextRef targetImage = CGBitmapContextCreate(NULL, width, height, 8, 1 * CGImageGetWidth(c), CGColorSpaceCreateDeviceGray(), kCGImageAlphaNone);
UInt32 *sourceData = (UInt32*)[((__bridge_transfer NSData*) CGDataProviderCopyData(CGImageGetDataProvider(c))) bytes];
UInt32 *sourceDataPtr;
UInt8 *targetData = CGBitmapContextGetData(targetImage);
UInt8 r,g,b;
uint offset;
for (uint y = 0; y < height; y++)
{
for (uint x = 0; x < width; x++)
{
offset = y * width + x;
if (offset+2 < width * height)
{
sourceDataPtr = &sourceData[y * width + x];
r = sourceDataPtr[0+0];
g = sourceDataPtr[0+1];
b = sourceDataPtr[0+2];
targetData[y * width + x] = (r+g+b)/3;
}
}
}
CGImageRef newImageRef = CGBitmapContextCreateImage(targetImage);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
CGContextRelease(targetImage);
CGImageRelease(newImageRef);
호프가 도움이 되었으면
원시 픽셀 데이터에 액세스하려면 [this] (http://stackoverflow.com/questions/6073259/getest-rgb-pixel-data-from-cgimage)를 보시기 바랍니다. 변환을 수행해야합니다. 8 비트. 형식이 미리 알려지면 매우 간단합니다. RGBA는 R, G, B 채널의 평균을 찾습니다. –
그는 회색 음영을 의미한다고 생각합니다. Leptonica는 이미지 처리 라이브러리입니다. 대부분의 이미지 처리 라이브러리는 회색 음영 이미지와 함께 작동합니다. –