我将CMYK jpeg图片加载到NSImage, 如何提取特定像素的c,m,y,k值? 如何获得包含所有CMYK像素数据的字节数组。 在RGB图像中我使用.bitmapData,但似乎CMYK图像看起来都是0xff。
我尝试将NSImage转换为RGB色彩空间,但我不喜欢结果..我实际上想要c,m,y,k值而不是等效的rgb值
NSImage *image = [[NSImage alloc] initWithContentsOfFile:inputImageString];
NSBitmapImageRep* rep = [NSBitmapImageRep imageRepWithData:[image TIFFRepresentation]];
bool isCMYK = [rep.colorSpaceName isEqualToString: NSDeviceCMYKColorSpace];
const unsigned char *bytes = rep.bitmapData;
// all values at bytes are not weird and does not represent CMYK values
p.s我不能使用核心图形,因为这个可可代码是使用GNUStep编译的。
答案 0 :(得分:1)
我没有对此进行测试,但此代码是否返回了正确的值?
NSImage *image = [[NSImage alloc] initWithContentsOfFile:inputImageString];
NSBitmapImageRep* rep = [NSBitmapImageRep imageRepWithData:[image TIFFRepresentation]];
bool isCMYK = [rep.colorSpaceName isEqualToString: NSDeviceCMYKColorSpace];
if(isCMYK){
NSColor* aColor = [raw_img colorAtX:0 y:0];
NSString* theColorSpace = [aColor colorSpaceName];
if ([theColorSpace isEqualToString: NSDeviceCMYKColorSpace]){
NSLog(@"C:%f,M%f,Y:%f,K%f",
aColor.cyanComponent,
aColor.magentaComponent,
aColor.yellowComponent,
aColor.blackComponent);
}
}
如果它能让你想要的话,这应该是一个很好的起点。
答案 1 :(得分:0)
http://oleb.net/blog/2011/05/using-cocoa-to-convert-images-from-rgb-to-cmyk/