вот код для создания и рисования моно изображения.Это то же самое, что и у вас, но с большим контекстом (и без необходимой очистки):
size_t width = 200;
size_t height = 200;
size_t bitsPerComponent = 1;
size_t componentsPerPixel = 1;
size_t bitsPerPixel = bitsPerComponent * componentsPerPixel;
size_t bytesPerRow = (width * bitsPerPixel + 7)/8;
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceGray();
CGBitmapInfo bitmapInfo = kCGImageAlphaNone;
CGFloat decode[] = {0.0, 1.0};
size_t dataLength = bytesPerRow * height;
UInt32 *bitmap = malloc( dataLength );
memset( bitmap, 255, dataLength );
CGDataProviderRef dataProvider = CGDataProviderCreateWithData( NULL, bitmap, dataLength, NULL);
CGImageRef cgImage = CGImageCreate (
width,
height,
bitsPerComponent,
bitsPerPixel,
bytesPerRow,
colorspace,
bitmapInfo,
dataProvider,
decode,
false,
kCGRenderingIntentDefault
);
CGRect destRect = CGRectMake(0, 0, width, height);
CGContextDrawImage( context, destRect, cgImage );
Если я изменю массив декодирования на CGFloat decode[] = {0.0, 0.0};
, я всегда получаю черное изображение.Если вы пробовали это, и это не имело никакого эффекта (вы говорите, что получаете одно и то же изображение, какие бы значения вы не использовали), либо: вы на самом деле не передаете эти значения, но вы думаете, что это так, либоt фактически проверяет вывод CGImageCreate.