iOS sdk, рендеринг изображения из массива unsigned char, CGBitmapContextCreate возвращает NULL - PullRequest
1 голос
/ 07 мая 2011

У меня есть 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-кода.

Символические данные представлены в виде массива, содержащего ширину * ширину символов.Каждый учар представляет собой модуль (точку).Если младший бит uchar равен 1, соответствующий модуль имеет черный цвет.

В приведенном выше случае ширина равна 177 .

Я пробовал различные комбинации вCGBitmapContextСоздайте, но всегда, похоже, получите NULL.

Пожалуйста, сообщите.

Ваша помощь будет высоко оценена.

1 Ответ

1 голос
/ 02 октября 2011

Я успешно использовал:

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);
...