Получение альфа-значения пикселя для UIImage

В настоящее время я пытаюсь получить альфа-значение пикселя в UIImageView. Я получил CGImage из [UIImageView image] и создал байтовый массив RGBA из этого. Альфа предварительно умножается.

<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>

Затем я вычисляю индекс массива для данного альфа-канала, используя координаты из UIImageView.

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

Однако я не получаю ожидаемых значений. Для полностью черной прозрачной области изображения я получаю ненулевые значения для альфа-канала. Нужно ли переводить координаты между UIKit и Core Graphics - т.е. инвертирована ли ось Y? Или я неправильно понял предварительно умноженные альфа-значения?

Update:

Предложение @Nikolai Ruhe было ключом к этому. На самом деле мне не нужно было переводить координаты UIKit и координаты Core Graphics. Однако после установки режима наложения мои альфа-значения оказались такими, как я ожидал:

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

Ответы на вопрос(4)

Ваш ответ на вопрос