Recuperando um valor alfa de pixel para um UIImage

Atualmente, estou tentando obter o valor alfa de um pixel em um UIImageView. Eu obtive o CGImage de [imagem UIImageView] e criei uma matriz de bytes RGBA a partir disso. O alfa é pré-multiplicado.

<code>CGImageRef image = uiImage.CGImage;
NSUInteger width = CGImageGetWidth(image);
NSUInteger height = CGImageGetHeight(image);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
rawData = malloc(height * width * 4);
bytesPerPixel = 4;
bytesPerRow = bytesPerPixel * width;

NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(
    rawData, width, height, bitsPerComponent, bytesPerRow, colorSpace,
    kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big
);
CGColorSpaceRelease(colorSpace);

CGContextDrawImage(context, CGRectMake(0, 0, width, height), image);
CGContextRelease(context);
</code>

Eu, então, calculo o índice da matriz para o canal alfa fornecido usando as coordenadas do UIImageView.

<code>int byteIndex = (bytesPerRow * uiViewPoint.y) + uiViewPoint.x * bytesPerPixel;
unsigned char alpha = rawData[byteIndex + 3];
</code>

No entanto, não recebo os valores esperados. Para uma área totalmente preta e transparente da imagem, recebo valores diferentes de zero para o canal alfa. Preciso traduzir as coordenadas entre o UIKit e Core Graphics - ou seja, o eixo y é invertido? Ou eu entendi mal valores alfa pré-multiplicados?

Atualizar:

A sugestão de @Nikolai Ruhe foi fundamental para isso. Na verdade, não precisei traduzir entre as coordenadas do UIKit e as coordenadas do Core Graphics. No entanto, depois de definir o modo de mesclagem, meus valores alfa eram o que eu esperava:

<code>CGContextSetBlendMode(context, kCGBlendModeCopy);
</code>

questionAnswers(2)

yourAnswerToTheQuestion