使用ApplescriptObjC使用NSColorSpace和iccProfileData转换图像的色彩空间

时间:2019-06-20 19:40:35

标签: applescript-objc color-profile nscolorspace

我有一些代码可以将图像的色彩空间从RGB更改为GenericCMYK配置文件。我希望能够使用ICC配置文件将图像转换为CMYK色彩空间。在Photoshop中可以做到这一点,但是当您处理100幅图像时,该过程会花费太多用户时间,我正在尝试创建一个AppleScript小滴来为他们完成此操作。

我已经看过NSColorspace的页面,并且看来有一种方法可以做到这一点。我只是不知道如何将该Objective-C转换为ApplescriptObjC。这是对NSColorSpace中ICC配置文件的两个引用: 初始化?(iccProfileData:数据) 给定ICC配置文件,初始化并返回NSColorSpace对象。 var iccProfileData:数据? 创建接收方的ICC配置文件数据。

这是我感谢Macscripter.net的Shane的代码:

set theImage to (current application's NSImage's alloc()'s initWithContentsOfURL:theInput)
    set imageRep to (theImage's representations()'s objectAtIndex:0)
    set targetSpace to current application's NSColorSpace's genericCMYKColorSpace()
    set bitmapRep to (imageRep's bitmapImageRepByConvertingToColorSpace:targetSpace renderingIntent:(current application's NSColorRenderingIntentPerceptual))
    set theProps to (current application's NSDictionary's dictionaryWithObjects:{1.0, true} forKeys:{current application's NSImageCompressionFactor, current application's NSImageProgressive})
    set jpegData to (bitmapRep's representationUsingType:(current application's NSJPEGFileType) |properties|:theProps)
    set colorSpace to bitmapRep's colorSpaceName() as text
    (jpegData's writeToURL:theOutput atomically:true)

我只需要弄清楚如何将ICC配置文件作为CMYK转换过程的停放区,我相信在以下代码行中会发生这种情况:

set targetSpace to current application's NSColorSpace's genericCMYKColorSpace()

有人可以给我一些指导吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您正在查看Swift中的NSColorSpace文档。 AppleScriptObjC是Objective-C的桥梁,因此在Objective-C中查看文档(可以在页面标题中设置语言)更加有意义,您的代码片段将变为

set targetSpace to current application's NSColorSpace's alloc's initWithICCProfileData:iccData

其中iccData是您要使用的ICC配置文件数据。