[AI CC-CC2022] RECOLOR ENGINE v2 by S.H.

Тут сложно сказать в чем проблема, либо я криво перенес (хотя сверял два раза), либо у Брюса ошибка, либо нужно понимать что это преимущественно отличие цвета (с игнорированием остальных показателей). Собственно dE94 добавил для случаев когда убираются ключевые цвета и нужно подобрать их адекватную по восприятию замену, переход от Lab к LCH в этом случае дает лучшие результаты.

Попробую реализовать FlyMode.

Абсолютно лишняя, через свотчи можно поправить результат.
Если нужно их удалить, то это одно движение мышкой по переносу группы на значок корзины.
У меня в версии 17 работает так: создаётся первая группа, затем скрипт создаёт из неё копию со спотами.
После применения скрипта, первая группа с CMYK вручную удаляется нормально, а вот при удалении группы со спотами, удаляется только значок группы, все споты остаются.
 
Вторая версия скрипта Файл из Облака Mail.Ru
Добавлена кнопка для перекрашивания выделенных объектов "On fly".
Минимальный размер точки в слайдере уменьшен до 1.
Пока имеются некоторые отклонения при перекраске через свотчи, но затрудняюсь найти источник проблемы.
Для создания группы с глобальными цветами можно пользоваться не Recolor Artwork, а добавлением новой группы при выделенных объектах.
onfly.PNG sg.PNG
 
Последнее редактирование:
  • Спасибо
Реакции: dumbm1, Jeine и netik
Вторая версия скрипта Файл из Облака Mail.Ru
Добавлена кнопка для перекрашивания выделенных объектов "On fly".
Минимальный размер точки в слайдере уменьшен до 1.
Пока имеются некоторые отклонения при перекраске через свотчи, но затрудняюсь найти источник проблемы.
Для создания группы с глобальными цветами можно пользоваться не Recolor Artwork, а добавлением новой группы при выделенных объектах.
Посмотреть вложение 106869 Посмотреть вложение 106870

По поводу минимальной точки - самый простой вариант, по-моему, добавить в самом конце отдельный цикл с условием на затягивание точки с шагом в 0,4% с учётом выбранных галочек CMYK(чтобы не затягивать чёрный, например, если выбрано CMY).
 
По поводу минимальной точки - самый простой вариант, по-моему, добавить в самом конце отдельный цикл с условием на затягивание точки с шагом в 0,4% с учётом выбранных галочек CMYK
Это не самый простой вариант. Сейчас скрипт может затянуть или оборвать цвет в зависимости от лучшего цветового приближения.
Затягивать все используемые краски это не совсем корректно, а принимать такие решения исходя из других факторов это уже не задачи скрипта, для этого существуют специализированные программы и плагины которыми проще и воспользоваться.
 
Я явно что-то пропустил, но что такое: deltaE
Delta E - это общее обозначения для формул по которым можно посчитать отличия между цветами.
Скрипт берет исходный цвет и пытается найти максимально к нему приближенный с помощью этих формул. Для убирания черного канала достаточно формулы DeltaE 76... Для случаев когда убираются другие каналы более подходящими будут DeltaE 94, эти формулы есть в двух вариантах: текстиль / компьютерная графика. Все формулы на одной странице Формула цветового отличия — Википедия
minimal dot size - это минимальный % краски на выходе в каждом канале, к примеру если зададим этот параметр 3, то можем получить цвета 5-4-3-0 или 4-3-0-0 или 0-0-0-0, но не будет 2-1-1-0.
Наверное даже проще показать картинкой из ColorPicker
cp.png
 
А разве в данном контексте это не одно и то же?
 
Наоборот, при фиксированной линиатуре размер точки регулируется процентом растра.
 
Так я вам об этом и говорю
 
внизу - как перекрасил скрипт, справа - фотошоп (через Channel Mixer),
как по мне - через фотошоп получше (особенно в тенях).
О тенях спорить не буду, но как по мне результат для автоматики вполне достойный.
вот бы сделать так, чтобы
перекрашивание было по тому алгоритму как в ChannelMixer фотошопа...
Вроде @Станислав Хоффман анонсировал разработку такого скрипта, я пока чисто технически не знаю как это реализовать кроме как через глобальные цвета, но этот метод похоже не снискал понимания (да и есть небольшие детальки с которыми нужно управиться).
 
Кстати посмотрите вариант который получается после deltaE 94G.
 
Протестировал на РЕАЛЬНОЙ задаче (ссылку прилагаю),
внизу - как перекрасил скрипт, справа - фотошоп (через Channel Mixer),
как по мне - через фотошоп получше (особенно в тенях).
DropMeFiles – бесплатный файлообменник без регистрации
--
Вы, насколько Я понял, перекрашиваете по некому алгоритму, а вот бы сделать так, чтобы
перекрашивание было по тому алгоритму как в ChannelMixer фотошопа...
Channel Mixer будет. Алгоритм как в фотошопе - один-в-один. И с более продвинутым интерфейсом. Остановился на последней стадии - сборка интерфейса - там очень много элементов.
 
И с более продвинутым интерфейсом.
А можно скрин интерфейса для примера?
Кстати нашел в чем у меня ошибка, обработка минимального размера точки вносит искажения. Сейчас внесу правки и добавлю пару плановых фишек и может одну неплановую и в целом будет финальная версия скрипта.
 
А можно скрин интерфейса для примера?
Кстати нашел в чем у меня ошибка, обработка минимального размера точки вносит искажения. Сейчас внесу правки и добавлю пару плановых фишек и может одну неплановую и в целом будет финальная версия скрипта.
у интерфейса будет 2 варианта - компактный и полный - на выбор пользователя. Компактный ещё не готов. Могу скинуть скрин в личку, не хотелось бы сейчас отвлекаться на критику интерфейса.
 
А можно скрин интерфейса для примера?
Кстати нашел в чем у меня ошибка, обработка минимального размера точки вносит искажения. Сейчас внесу правки и добавлю пару плановых фишек и может одну неплановую и в целом будет финальная версия скрипта.
Отлично. Позже тоже сделаю интерфейс для Recolor Engine. Возможно, поковыряюсь с точностью подбора цветов, но идей как это сделать пока нет.
 
Всем привет, нужна помощь зала.
Переключение между окнами - скрыть одно и показать другое.
В хелпе к ExtendScript Toolkit описано следующее ограничение:

4.1 “Nested” modal dialogs

The following sequence of operations using dialog (modal) windows is illegal, and will result in an
application crash (assuming the script created two separate dialog windows - win1 and win2):

var result1 = win1.show();
win1.hide();
/* Create and show a nested dialog */
var result2 = win2.show();
win2.close();
win1.show();
win1.close();

As noted in the JavaScript Tools Guide document, calling hide() for a dialog window does not only
change the window's visibility; it is equivalent to calling close(0), which removes the window from its
modal state. If the script calls show() a second time for this window to make it visible again, the
application is likely to crash when the window is finally closed. If your script requires the use of "nested"
modal dialogs, use a sequence like this instead:

var result1 = win1.show();
/* Create and show a nested dialog */
var result2 = win2.show();
win2.close();
win1.close();

С типом pallete работает, а вот с dialog - нет, сообщает о нарушении правил.
Если закрыть окно командой win.close, то его уже не вернуть.

Пример кода для теста:

Код:
var win = new Window ("dialog", "Window 1", [150, 150, 1040, 880]);

     var win2 = new Window("dialog", "Window 2", [150, 150, 600, 250]);   
          win2_pnl = win2.add("panel", [10, 10, 440, 100], "Move slider around"); 
     resetButton2 = win2_pnl.add("button", [25, 10, 125, 40], "Minus x");       

var tpanel = win.add ("tabbedpanel", [5, 5, 650, 680]);
var general = tpanel.add ("tab", [5, 5, 400, 300], "1, 2");  ////  TAB
var win_pnl = general.add ("panel", [0, 0, 500, 500], "1"); ////  PANEL

    var ys1 = 5;
    var ys2 = 30;
    var xxx = 20;
    var yyy = 10;
    var xx2 = 230;
    var yy2 = 45;
    
    var dfg = 8;
    label_CC = win_pnl.add("edittext", [xxx+220, 19+dfg, 280, 38+dfg],             "100"); 

        var slideCC = win_pnl.add("slider", [xxx, 25, xx2, 50], 0, -200, 200);      slideCC.value = 100;

var images = tpanel.add ("tab", undefined, "3, 4");  ////  TAB
images.alignChildren = "fill";
var imwin_pnl = images.add ("panel", undefined, "Options");  ////  PANEL
imwin_pnl.dtd_decl = imwin_pnl.add ("checkbox", undefined, "123");

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////  BUTTONS
//var buttons = win.add ("group");
button1 = win.add ("button", [50, 200, 100, 230], "Export", {name: "ok"});
button2 = win.add ("button", [250, 200, 300, 230], "Cancel");
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     button1.onClick = function()  //  WIN 1
     {   
//  ВЛОЖЕННЫЕ ОКНА
//var result1 = win.show();
win.close();
win2.show();
//var result2 = win2.show();
//win2.close();
     } 

    resetButton2.onClick = function()  //  WIN 2
     {   
//  ВЛОЖЕННЫЕ ОКНА
//var result1 = win2.show();
win2.close();
win.show();
//var result2 = win.show();
//win2.close();
     } 

win.show ();
 
А зачем вам его скрывать? В порядке бреда - просто уберите подальше с глаз долой, потом верните.
 
ну последнее и будет активно.

вот только одно окно из другого я бы не советовал показывать, в последней модификации ScriptUI от этого начинается форменный бардак, и эти порожденные окна вообще никогда не закрываются
 
я задумал 2 варианта интерфейса - полный и компактный. Хочу по кнопке между ними переключаться. Пока нашёл только вариант в один конец - к окну 2.
 
Последнее редактирование:
ну, надо вызывать из обработчика клика функцию с параметром (1 или 2), текущее окно прямо из обработчика закрывать, а из этой функции запускать новое в зависимости от параметра. так по-моему нормально работает.