iOS sdk,从unsigned char数组渲染图像,CGBitmapContextCreate返回NULL

时间:2011-05-07 00:28:17

标签: xcode ios ios4 cgbitmapcontextcreate cgbitmapcontext

我有一个 unsigned char * data ,其中包含以下值,如在xcode中调试时所见,

\ XC1 \ XC1 \ XC1 \ XC1 \ XC1 \ XC1 \ XC1 \ XC0 \ X84 \ X03 \ X03 \ X02 \ X03 \ X02 \ X03 \ X03 \ X03 \ X02 \ X02 \ X03 \ X02 \ X03 \ X02 \ X02 \ X03 \ X02 \ X02 \ X02 \ X02 \ X03 \ X03 \ X03 \ X03 \ X03 \ X02 \ X02 \ X03 \ X03 \ X03 \ X02 \ X02 \ X03 \ X02 \ X02 \ X02 \ X02 \ X03 \ X03 \ X03 \ X02 \ X02 \ X02 \ X02 \ X03 \ X02 \ X03 \ X02 \ X03 \ X02 \ X03 \ X02 \ X03 \ X02 \ X03 \ X02 \ X02 \ X02 \ X03 \ X03 \ X03 \ X03 \ X03 \ X02 \ X03 \ X02 \ X03 \ X02 \ X03 \ X03 \ X02 \ X02 \ X03 \ X03 \ X03 \ X02 \ X02 \ X02 \ X02 \ X02 \ X03 \ X02 \ X02 \ X03 \ X02 \ X03 \ X02 \ X02 \ X03 \ X03 \ X03

这是qr代码的数据数组。

符号数据表示为包含宽度*宽度uchars的数组。每个uchar代表一个模块(点)。如果uchar的较低位为1,则相应的模块为黑色。

在上述情况下,宽度 177

我在CGBitmapContextCreate中尝试了各种组合,但似乎总是得到NULL。

请告知。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我已成功使用:

CGImageRef refImage = [myUIImage CGImage];
CGContextRef ctx;
int w = CGImageGetWidth(refImage);
int h = CGImageGetHeight(refImage);
int bytesPerRow = CGImageGetBytesPerRow(refImage);
ctx = CGBitmapContextCreate(rawData,
                            w,
                            h,
                            8,
                            bytesPerRow,
                            CGImageGetColorSpace( refImage ),
                            kCGImageAlphaPremultipliedLast ); 

// Fill in rawData, which is the unsigned char pixel array

refImage = CGBitmapContextCreateImage (ctx);
UIImage* myUIImage2 = [UIImage imageWithCGImage:refImage];  

CGContextRelease(ctx); 
CGImageRelease(refImage);