GBitmapContextCreate: неподдерживаемая комбинация параметров

Возникли проблемы с CGBitmapContextCreate и получили:

Ошибка: неподдерживаемое описание пикселя - 1 компонент, 8 бит на компонент, 8 бит на пиксель

с этим кодом:

float *bitmap = (float*)malloc(sizeof(float) * width * height);

// fill with floats

CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceGray();
size_t bitsPerComponent = 8;
size_t bytesPerRow = sizeof(float)*width;
CGContextRef context = CGBitmapContextCreate(bitmap, width, height, bitsPerComponent, bytesPerRow, colorspace
                                             , kCGImageAlphaNone| kCGBitmapFloatComponents | kCGBitmapByteOrder32Little);

согласно: http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html.

Это 8 бит на пиксель и 8 бит на компонент. Не уверен, почему я получаю сообщение об ошибке. Я видел здесь несколько других сообщений о том, как это правильно сделать, но большинство из них связано с редактированием изображений, а не с созданием новых, поэтому некоторые настройки можно взять из исходного изображения.


person richy    schedule 14.12.2011    source источник


Ответы (1)


Если вы используете компонент с плавающей запятой, тогда вам, безусловно, нужно сказать, что количество битов на компонент - это количество бит в веществе с плавающей запятой:

size_t bitsPerComponent = 8 * sizeof (float);

Другими словами, 8 бит на пиксель! = 1 число с плавающей запятой на пиксель, поскольку число с плавающей запятой составляет 32 бита.

person William Gallafent    schedule 20.09.2012
comment
Спасибо! но теперь я просто получаю описание неподдерживаемого пикселя - 1 компонент, 32 бита на компонент, 32 бита на пиксель - person richy; 25.09.2012