我想获取 .png 图像的每个像素的颜色。它的尺寸是320*480。
但是每次我使用“malloc”或“calloc”来获取内存时,我只得到 NULL。
这是代码:
CGImageRef imageRef = image.CGImage;
NSUInteger width = CGImageGetWidth(imageRef);
NSUInteger height = CGImageGetHeight(imageRef);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
unsigned char *rawData = (unsigned char*) calloc(height * width * 4, sizeof(unsigned char));
NSUInteger bytesPerPixel = 4;
NSUInteger bytesPerRow = bytesPerPixel * width;
NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(rawData, width, height,
bitsPerComponent, bytesPerRow, colorSpace,
kCGImageAlphaNoneSkipLast);
CGColorSpaceRelease(colorSpace);
NSLog(@"width height %d %d", height, width);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);
CGContextRelease(context);
//The values in Variables view is as follows
rawData unsigned char * 0x1324b000
*rawData unsigned char '\0'
是因为 m 要求的尺寸很大吗?
我厌倦了用 'malloc' 和 'calloc' 来获取小值的内存,但都是徒劳的。当使用 malloc 时,我还使用了 'memset()'。但是我在'rawdata'中得到的只是NULL。
CGImage 也不为零。宽度和高度分别具有正确的值 320、480。
请帮忙。
提前致谢。