CGBitmapContextCreate auf dem iPhone/iPad

Habe ich eine Methode, die Bedürfnisse zu analysieren, durch ein Bündel von großen PNG-Bilder pixel für pixel (die PNGs werden 600x600 Pixel). Es scheint gut zu funktionieren, auf dem Simulator, aber auf dem Gerät (iPad), ich bekomme eine EXC_BAD_ACCESS in einigen internen Speicher kopieren-Funktion. Es scheint, die Größe der Schuldige, weil wenn ich es versuche auf die kleineren Bilder, alles scheint zu funktionieren. Hier ist die Speicher-bezogene Fleisch der Methode unten.

+ (CGRect) getAlphaBoundsForUImage: (UIImage*) image 
{    
    CGImageRef imageRef = [image CGImage];

NSUInteger width = CGImageGetWidth(imageRef);
NSUInteger height = CGImageGetHeight(imageRef);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

unsigned char *rawData = malloc(height * width * 4);
memset(rawData,0,height * width * 4);

NSUInteger bytesPerPixel = 4;
NSUInteger 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), imageRef);
CGContextRelease(context);

/* non-memory related stuff */

free(rawData);

Wenn ich diese auf ein paar Bilder, es läuft 12 mal und dann scheißt aus, während der simulator läuft es ohne problem. Habt Ihr irgendwelche Ideen?

InformationsquelleAutor toastie | 2010-04-12

Schreibe einen Kommentar