Помогите создать хитрый Action

Всем доброго дня.



Есть следующая задача.



Имеется дугообразное искривление 1.8 мм при печати на холсте.



Соответственно, нужно чтобы все печатаемые документы трансформировались через Transform-War- предустановка Upper Arc (деформация Дугой Сверху) и далее в поле Изгиб подбирается параметр в %, чтобы линейные размеры изображения искривились на 1.8 мм по высоте



Все изображения разные, и в зависимости от линейных размеров, этот самый % модификатора меняется.

например высота 16.12 см - значение value составит 1.9%

высота 27.84 см - составит 2.2%



Мне нужно, чтобы фотошоп в этой деформации опирался не на % при настройке этой трансформации, а на то, что изменение должно быть 1.8 мм. И написать уже потом action, чтобы любое изображение он так деформировал.



Как это сделать? Есть идеи, друзья? ((((

Комментарии пользователей

brusher

И если я не ошибаюсь, то процент искажения будет зависеть не от общей высоты изображения, а от его ширины. Осталось только найти/придумать формулу по которой посчитать этот процент.

Blueberry_lulu

Спасибо, изучил статью! Чтобы точно посмотреть настройки Варпа (внутренние) поставил себе Script Listener Но в его логах я не нашел никакой дополнительной математики, он прямолинейно принимает введенное мной значение, например 1.8. И не ведет расчетов относительно размеров изображения var desc3 = new ActionDescriptor(); var idHrzn = charIDToTypeID( "Hrzn" ); var idRlt = charIDToTypeID( "#Rlt" ); desc3.putUnitDouble( idHrzn, idRlt, 0.000000 ); var idVrtc = charIDToTypeID( "Vrtc" ); var idRlt = charIDToTypeID( "#Rlt" ); desc3.putUnitDouble( idVrtc, idRlt, 0.000000 ); var idOfst = charIDToTypeID( "Ofst" ); desc2.putObject( idOfst, idOfst, desc3 ); var idwarp = stringIDToTypeID( "warp" ); var desc4 = new ActionDescriptor(); var idwarpStyle = stringIDToTypeID( "warpStyle" ); var idwarpStyle = stringIDToTypeID( "warpStyle" ); var idwarpArcUpper = stringIDToTypeID( "warpArcUpper" ); desc4.putEnumerated( idwarpStyle, idwarpStyle, idwarpArcUpper ); var idwarpValue = stringIDToTypeID( "warpValue" ); desc4.putDouble( idwarpValue, -1.800000 ); var idwarpPerspective = stringIDToTypeID( "warpPerspective" ); desc4.putDouble( idwarpPerspective, 0.000000 ); var idwarpPerspectiveOther = stringIDToTypeID( "warpPerspectiveOther" ); desc4.putDouble( idwarpPerspectiveOther, 0.000000 ); var idwarpRotate = stringIDToTypeID( "warpRotate" ); var idOrnt = charIDToTypeID( "Ornt" ); var idHrzn = charIDToTypeID( "Hrzn" ); desc4.putEnumerated( idwarpRotate, idOrnt, idHrzn ); var iduOrder = stringIDToTypeID( "uOrder" ); desc4.putInteger( iduOrder, 4 ); var idvOrder = stringIDToTypeID( "vOrder" ); desc4.putInteger( idvOrder, 2 ); var idwarp = stringIDToTypeID( "warp" ); desc2.putObject( idwarp, idwarp, desc4 ); но допустим, я смогу вывести некую формулу, зависимости изменения линейных размеров от %Value куда же мне её подставлять в этом скрипте?

brusher

Про формулу — её абсолютно точно можно вывести. Например, я сделал два прямоугольника. Один 100 пикселей шириной, второй — 300. Поставил цель выгнуть оба вверх на 10 пикселей, на глазок примерил для первого значение. Получилось Bend=25. Раз второй в три раза шире — решил разделить значение и попробовать его применить: 8.3. Подошло. Перепроверил еще на нескольких примерах и все сошлось. Выходит, зависимость линейная и написать функцию или определить коэффициент от которого отталкиваться — будет легко.

brusher

Трансформации на языке скриптов та еще заморочка =) Проще всего ввести какое-нибудь странное число и вместо него потом поставить свою переменную. Или же разбираться в http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/photoshop/pdfs/photoshop_scriptref_js.pdf =) Если я правильно понял — вместо -1.800000, правда все значения кодов не сверял с мануалом =)