Pobieranie wartości pikseli alfa dla UIImage

Obecnie próbuję uzyskać wartość alfa piksela w UIImageView. Uzyskałem CGImage z [obrazu UIImageView] i na tej podstawie utworzyłem tablicę bajtów RGBA. Alpha jest przedwczesna.

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

Następnie obliczam indeks tablicy dla danego kanału alfa, używając współrzędnych z UIImageView.

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

Nie dostaję jednak wartości, których oczekuję. Dla całkowicie czarnego przezroczystego obszaru obrazu otrzymuję niezerowe wartości dla kanału alfa. Czy muszę tłumaczyć współrzędne między UIKit i Core Graphics - tj: czy oś Y jest odwrócona? Czy może źle zrozumiałem wstępnie obliczone wartości alfa?

Aktualizacja:

Sugestia @ Nikolai Ruhe była kluczem do tego. W rzeczywistości nie musiałem tłumaczyć współrzędnych UIKit i współrzędnych Core Graphics. Jednak po ustawieniu trybu mieszania moje wartości alfa były tym, czego oczekiwałem:

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

questionAnswers(2)

yourAnswerToTheQuestion