Вы можете использовать NSBitmapImageRep
для создания NSImage
float-by-float.
Интересно, что один из его инициализаторов имеет самое длинное имя метода во всем Какао:
- (id)initWithBitmapDataPlanes:(unsigned char **)planes
pixelsWide:(NSInteger)width
pixelsHigh:(NSInteger)height
bitsPerSample:(NSInteger)bps
samplesPerPixel:(NSInteger)spp
hasAlpha:(BOOL)alpha
isPlanar:(BOOL)isPlanar
colorSpaceName:(NSString *)colorSpaceName
bitmapFormat:(NSBitmapFormat)bitmapFormat
bytesPerRow:(NSInteger)rowBytes
bitsPerPixel:(NSInteger)
Это хорошо документировано, по крайней мере. После того, как вы создали его, предоставив массивы с плавающей точкой в planes
, вы можете получить NSImage
для отображения:
NSImage *image = [[NSImage alloc] initWithCGImage:[bitmapImageRep CGImage] size:NSMakeSize(width,height)];
Или чуть чище
NSImage *image = [[[NSImage alloc] init] autorelease];
[im addRepresentation:bitmapImageRep];
Существует инициализатор, который просто использует контейнер NSData
:
+ (id)imageRepWithData:(NSData *)bitmapData
хотя это зависит от вашего bitmapData
, содержащего один из правильных растровых форматов.