如何从.png图像中获取像素数组?

时间:2013-08-22 08:57:36

标签: iphone ios malloc calloc cgbitmapcontextcreate

我想获得.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'

是因为要求的尺寸很大吗?

我厌倦了用'malloc'和'calloc'来获取小值的记忆,但都是徒劳的。当使用malloc时我也使用'memset()'。但我在“rawdata”中获得的只是NULL。

CGImage也不是零。宽度和高度分别具有正确的值320,480。

请帮忙。

提前致谢。

0 个答案:

没有答案