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 бит на компонент. Не уверен, почему я получаю ошибку, хотя. Я видел несколько других постов о том, как сделать это правильно, но большинство имеет дело с редактированием изображений, а не с созданием новых, поэтому некоторые настройки могут быть взяты из исходного изображения.
1 ответ
Если вы используете компонент с плавающей запятой, то вам, безусловно, нужно сказать, что число битов в компоненте - это количество бит в поплавке:
size_t bitsPerComponent = 8 * sizeof (float);
Другими словами, 8 бит на пиксель!= 1 число с плавающей точкой на пиксель, поскольку число с плавающей точкой составляет 32 бита.