Получая данные пикселей из UIImage на iPhone, почему красный всегда 255? - PullRequest
2 голосов
/ 05 мая 2011

Заглядывал в эту тему и использовал этот метод с разной удачей:

-(RGBPixel*)bitmap{

    CGImageRef cgImage = [image CGImage];

    CGDataProviderRef provider = CGImageGetDataProvider(cgImage);

    bitmapData = CGDataProviderCopyData(provider);  

   [self setPixelByteData: malloc( CFDataGetLength(bitmapData) )];

    CFDataGetBytes( bitmapData, CFRangeMake( 0, CFDataGetLength( bitmapData ) ), pixelByteData );

    pixelData   = (RGBPixel*) pixelByteData;

    colorLabel.text = [[NSString alloc]initWithFormat:@"Pixel data: red (%i), green (%i), blue (%i).", pixelData[100].red, pixelData[100].green, pixelData[100].blue] ;

    return pixelData;
}

Единственное, что не работает, как я хочу, это данные красного пикселя:это всегда говорит 255, в то время как зеленый и синий ведут себя как ожидалось.Что я делаю не так?

1 Ответ

2 голосов
/ 05 мая 2011

Как намекнул @Nick, вы уверены, что знаете формат изображения?bitsPerComponent, bitsPerPixel, bytesPerRow, ColorSpace?Данные могут быть в формате int или float.Это может быть организовано RGB, RGBA или ARGB.

Если вы сами не создали изображение из необработанных данных, вы можете быть не уверены.Вы можете использовать такие функции, как CGImageGetBitmapInfo () , CGImageGetAlphaInfo () , CGImageGetColorSpace () , чтобы узнать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...