来自NSColor的RGB值

时间:2015-10-05 21:41:07

标签: macos cocoa sketch-3 sketchapp cocoascript

我正在尝试读取osx颜色列表(.clr),并且无法解释颜色值。

context:我正在为名为Sketch的设计程序编写调色板插件。插件是用cocoascript编写的,它是JS和Objective-C / Cocoa之间的桥梁。这允许您使用像NSColor

这样的类

我正在使用此代码来读取文件:

// Choose colorlist file ------------------------------------------

var openPanel = NSOpenPanel.openPanel();

openPanel.setCanChooseDirectories(true);
openPanel.setCanChooseFiles(true);
openPanel.setCanCreateDirectories(true);
openPanel.setTitle("Choose a file");
openPanel.setPrompt("Choose");
openPanel.runModal();

// Read colors from file ------------------------------------------

var filePath = openPanel.URLs().firstObject().path();
var fileName = filePath.lastPathComponent().stringByDeletingPathExtension();

var colorList = NSColorList.alloc().initWithName_fromFile(fileName, filePath);
var colorKeys = colorList.allKeys();
var color = colorList.colorWithKey(colorKeys[3]);    

log(color);

这有效,我可以将颜色记录到OS X控制台应用程序。问题是我不确定如何使用输出:

NSCalibratedRGBColorSpace 0.0599575 0.220776 0.562826 1

CSS,Sketch和Photoshop中的rgba值是

16, 77, 161, 1

我想也许它只是缩放范围从255到1.但是当我做数学时它并没有完全加起来。 b值,例如:

0.562826 * 255 = 143.52063

但它应该是161。

还有其他方法我应该转换颜色吗?

1 个答案:

答案 0 :(得分:0)

您的color是一个NSColor对象,位于NSCalibratedRGBColorSpace,是标准的RGB色彩空间。您可以通过官方方法将其转换为整数值。

  

https://developer.apple.com/library/mac/qa/qa1576/_index.html

我将它转换为CocoaScript。

var red = color.redComponent() * 255.99999;
var green = color.greenComponent() * 255.99999;
var blue = color.blueComponent() * 255.99999;