Использование ApplescriptObjC для преобразования цветовых пространств изображения с использованием NSColorSpace и iccProfileData - PullRequest
0 голосов
/ 20 июня 2019

У меня есть код, который изменит цветовое пространство изображения с RGB на профиль GenericCMYK. Я хотел бы иметь возможность использовать профиль ICC для преобразования изображения в цветовое пространство CMYK. Есть способ сделать это в Photoshop, но этот процесс отнимает слишком много времени у пользователей, когда вы имеете дело с сотнями изображений, я пытаюсь создать каплю AppleScript, которая сделает это для них.

Я уже посмотрел страницу NSColorspace и похоже, что есть способ сделать это. Я просто понятия не имею, как преобразовать этот Objective-C в ApplescriptObjC. Вот две ссылки на профили ICC в NSColorSpace: init? (iccProfileData: Data) Инициализирует и возвращает объект NSColorSpace с данным профилем ICC. var iccProfileData: данные? Данные профиля ICC, из которых был создан получатель.

Вот код, который у меня есть благодаря Шейну на Macscripter.net:

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 голосов
/ 21 июня 2019

Вы смотрите документацию по NSColorSpace в Swift. AppleScriptObjC - это мост Objective-C, поэтому имеет смысл просматривать документацию в Objective-C (язык можно указать в заголовке страницы), где ваш фрагмент кода становится

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

где iccData - данные профиля ICC, которые вы собираетесь использовать.

...