2015-10-05 63 views
2

我試圖讀取一個osx colorlist(.clr),並且無法解釋顏色的值。來自NSColor的RGB值

背景:我正在爲一個名爲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 

的RGBA值CSS,素描和Photoshop是

16, 77, 161, 1 

我想也許它只是從縮放範圍255到1.但是,當我做數學時,它不會完全加起來。 b值,例如:

0.562826 * 255 = 143.52063 

,但它應該是161

是否有我應該將彩色一些其他的方式?

+1

爲什麼這個標記爲Objective-C?發佈的代碼不是Objective-C。 – rmaddy

+2

「Sketch和Photoshop中的rgba值爲16,77,161,1」沒有顏色配置文件的RGB值幾乎完全沒用。你必須知道這些值所表達的相關顏色屬性是什麼,以便對它們有所瞭解。閱讀我的答案[這裏](http://stackoverflow.com/a/30053097/1312143)瞭解更多。 –

+1

@rmaddy草圖插件可以通過CocoaScript實現,CocoaScript是一個橋樑,可以讓您使用JavaScript編寫的外部腳本中的** Objective-C/Cocoa **代碼。 –

回答

0

您的colorNSColor對象,在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;