为什么来自imageWithCGImage的UIImage在arm64中崩溃?

时间:2015-01-30 21:14:32

标签: ios uiimage cgimage arm64

下面是一些将UIImage转换为CGImage的代码,对CGImage进行一些更改,然后将其转换回UIImage。

如果我的架构仅包含arm6和arm7,则此方法有效。如果我添加arm64,则最后返回的UIImage为null。

代码中有一些硬编码的数字,这让我觉得这就是问题所在。但我不确定如何以编程方式确定这些值。

这里是代码,减去中间的一些细节:

    CGImageRef imageRef = [anImage CGImage];
    NSUInteger width = CGImageGetWidth(imageRef);
    NSUInteger height = CGImageGetHeight(imageRef);
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    // Raw data malloc'd
    unsigned char *rawData = malloc(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);

...
// Change the alpha or color of pixels based on certain criteria
...

    CGImageRef ref = CGBitmapContextCreateImage(context);        
    free(rawData);
    CGContextRelease(context);

    image = [UIImage imageWithCGImage:ref];
    CFRelease(ref);

对这里发生的事情有什么看法?

0 个答案:

没有答案