objective-c - CMYK NSImage 获取像素数据

标签 objective-c macos cocoa nsimage gnustep

我正在将 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 我不能使用核心图形,因为这个 cocoa 代码是使用 GNUStep 编译的。

最佳答案

我没有对此进行测试,但是这段代码是否返回了正确的值?

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);
    }
}

如果它能满足您的需求,这应该是一个很好的起点。

关于objective-c - CMYK NSImage 获取像素数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30730915/

相关文章:

ios - 简单测试应用程序中的 SDWebImage 因 NSInvalidArgumentException 而崩溃

c - 以编程方式并行化 C 程序的一部分

mysql - 如何以root身份运行brew?

cocoa - NSTextView 在 mac os 上复制粘贴 NSTextAttachment

macos - 如何创建 NSImage 的 8 位、4 位和 1 位表示

objective-c - 我可以扩展 Objective-C Foundation 类,使其只影响我的实例吗?

ios - 带有 UIBarPositionTopAttached 的 UISearchController 将 UISearchBar 抛出屏幕;不可能有标准的 UISearchController 和 UITableView?

ios - TableViewController 委托(delegate)没有被调用

macos - 如何从 OS X 粘贴板/剪贴板中获取 HTML 数据?

objective-c - Cocoa 程序退出没有崩溃