Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

  • Автор темы Nolik
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

Nolik

Гость
Топикстартер
Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15?
Ну, типа, обойтись одним экшэном вместо двух и не мучится c сортировкой файлов в две группы при подготовке в Batch???
 
A

AlexZ

Гость
Топикстартер
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

Nolik сказал(а):
Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15?
Ну, типа, обойтись одним экшэном вместо двух и не мучится c сортировкой файлов в две группы при подготовке в Batch???

Надо ресайзить в процентах, тогда будет пропорциональность...
 
N

Nolik

Гость
Топикстартер
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

AlexZ сказал(а):
Надо ресайзить в процентах, тогда будет пропорциональность...

2 AlexZ
Не подходит, ибо стартовый размер у всех файлов разный, так как в RAW конвертере применялся КРОП.

Какие еще могут быть варианты???

С уважением
Nolik
 

Duran

Участник
Сообщения
174
Реакции
0
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

Вариант такой. Всеже придется записывать 2 экшена :) или записать 1-н, скопировать его и изменить опцию кадрирования на нужную.
Скажем, сценарий такой...
1. Обрезать (как предусмотрено для данного экшена).
2. сохранить по указанному адресу с закрытием.

Повесь на каждый по горячей клавише, открой свои файлы и
и в зависимости от ориентации вызывай нужный экшен :)
 

-=CMYK=-

Забанен
Сообщения
3 320
Реакции
2
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

Если окажется что у файла ориентация нетрадиционная - то окропить его и аминь.

Экшны не выполняют условий и не возвращают данных, поэтому просто экшнами не удасться сделать.

Вот код ява-скрипта.

Код:
if (documents.length > 0) 
{
    docRef = activeDocument;

    displayDialogs = DialogModes.NO;

    var strtRulerUnits = preferences.rulerUnits;
    preferences.rulerUnits = Units.CM;

    if (docRef.width > docRef.height)
 	// Landscape
	{
		docRef.resizeImage (21, 15, docRef.resolution, ResampleMethod.BICUBIC);
	}
    else
	// Portret
	{
		docRef.resizeImage (15, 21, docRef.resolution, ResampleMethod.BICUBIC);
	}
	    
   preferences.rulerUnits = strtRulerUnits;
	    
}
else
{
	alert("There must be at least one open document.");
}

Вам нужно его скопировать в буфер обмена и найдя по адресу C:\Program Files\Adobe\Photoshop 7.0\Presets\Scripts (или если у вас 8-ка - C:\Program Files\Adobe\Photoshop CS\Presets\Scripts) примеры ява-скриптов, сдублировать файл какого-нибудь из них, открыть его в Блокноте, выделить все, удалить и вставить из буфера этот скрипт. Файл записать, переименовать.

Данный скрипт сам файлы не открывает, поэтому вы должны сделать такой экшн, который просто запускает этот скрипт. Вот так: откройте любой документ, создайте новый экшн, включите его на запись, выполните этот ява-скрипт, остановите запись экшна. Теперь вы можете включать этот экшн в батч и пакетно обрабатывать свои картинки. Или назначить хотькей экшну который запускает ява-скрипт и давить его после открытия документа.
 

Duran

Участник
Сообщения
174
Реакции
0
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

Действительно, оригинатьно :)
На всякий случай напомню - что бы выполнить скрипт, выберите его в:
File>Scripts>имя скрипта.
 

-=CMYK=-

Забанен
Сообщения
3 320
Реакции
2
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

А что там оригинального-то? Ну, можно завести пару переменных и им назначать для ширины и высоты значения, а затем один раз использовать метод resizeImage (а может быть автор хотел resizeCanvas?) с этими переменными вместо фиксированных.

А в 7-ом меню выполнения скрипта по-другому выглядит. А в меню 8-го ваш скрипт появится если он по указанному адресу залит, а если не по нему - то бровзить нужно. Есть специальная команда, рядом.

В этой связи скрипты еще один бонус имеют - ими можно пользоваться коллективно, с одного и того же места. Кстати, в 8-ке, вроде бы и экшны тоже таким свойством возобладали.
 
N

Nolik

Гость
Топикстартер
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

2 -=CMYK=-
Супер. Скрипт делает то что надодобно.
Низкий вам реверанс...

А можно ли прямо из скрипта запустить какой-либо экшен??? Если да, то получится реализация оператора IF. Это вообще круто расширит функциональность экшена.

Кстати, «ImageReady CS», умеет при записи экшинов использовать условия. Почему в Шопе эту функциональность обрезали мне не понятно. По моему верно и обратное: в «ImageReady CS» обрезана функциональность пакетной «batch» обработки.. Это , тапа, маркетинговые ходы такие???
 

-=CMYK=-

Забанен
Сообщения
3 320
Реакции
2
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

Можно. Вместо строчек начинающихся docRef.resizeImage... нужно вставить такие:

doAction("Your Action Name", "Your Action Set Name.atn");

Заменяете Your Action Name на имя нужного вам экшна, а Your Action Set Name.atn заменяете на имя сета в котором данный экшн проживает. Причем, сет вовсе не обязательно иметь на диске в качестве файла *.atn, но, добавить расширение к имени сета в переменной данного метода - необходимо. Обе переменные должны быть заключены в кавычки, как в примере.

Читайте документацию, кстати, там все, в этих гробаных pdf'ах описано.

Можно еще создать экшн в памяти программы, а затем запустить его на выполнение. Но там такая замороченная кухня, что потравишь себе все мозги. :)

Кстати, есть и способ наоборот - создать форму для ява-скрипта и написать просто нормальную прогру для своих нужд. Если не нравится ява - на басике.
 
N

Nolik

Гость
Топикстартер
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

2 -=CMYK=-
Respect !!!
Данке вери матч...
 

-=CMYK=-

Забанен
Сообщения
3 320
Реакции
2
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

Erwähnen Sie es nicht.
 

Bokshich

Участник
Сообщения
41
Реакции
0
Scripts для Фотошопа

Всем привет.
Хотел бы обратиться к программистам для написания маленького скрипта для Фотошопа, который является расширенной версией вышенаписанного.

Простым языком алгоритм я написал, осталось только интерпретировать его, чтоб понял Фотошоп =)

Итак, пусть W-ширина, H-высота.

Если W>H, то
Если W/H >= 30/20, то H=20 и в Canvas Size W=30 (здесь и далее пропорции для диологовог окна Image Size сохранять, 300dpi)​
иначе W=30 и в Canvas Size H=20​
Если W<H, то
Если H/W >= 30/20, то W=20 и в Canvas Size H=30​
иначе H=30 и в Canvas Size W=20​


Скрипт нужен для следующей задачи: на входе имеются файлы с различным размерами сторон, нужны их свести к размеру 20x30, 300 dpi, без полей.

Заранее спасибо!
 

Bokshich

Участник
Сообщения
41
Реакции
0
Ответ: Scripts для Фотошопа

greatdeal сказал(а):
Сантиметр

Немного не правильно написал условие, вот, исправил:

Если W>H, то
Если W/H >= 30/20, то Action1​
иначе Action2​
Если W<H, то
Если H/W >= 30/20, то Action3​
иначе Action4​
 

Vipe

Участник
Сообщения
52
Реакции
1
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

Если изображение (изначальное, сорц так сказать) пропорционально этим вашим 15х21 и 21х15, то все гораздо проще. Не надо никаких проверок на высоту и ширину, не надо всех этих извращений. Надо лишь создать экшн с единственной строчкой выполняющей следующее:
File-Automate-Fit Image выставив там и в высоте и в ширине 21 (см?) перемноженный на нужный вам dpi (300 px/inch ~ 118,11 px/cm) т.е. 2480
Можно добавить еще одну. Выставляющую нужное вам DPI принудительно. Дo fit-а конечно же.
Логику этих действий объяснять, надеюсь, не надо.
 

Bokshich

Участник
Сообщения
41
Реакции
0
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

Vipe сказал(а):
Если изображение (изначальное, сорц так сказать) пропорционально этим вашим 15х21 и 21х15..

К сожалению, скрипт нужен для разных фотографий, не обязательно строго пропорциональным 20x30.
 

greatdeal

Забанен
Сообщения
469
Реакции
0
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

Примерно так. Я не проверял в работе, просто модифицировал тот скрипт который в этой теме был. У меня ощущение что тут половина лишняя, но чота не соображу как сократить многочлены, к вечеру уже дело. :)

Вам нужно заменить в выражении var myAction = ""; пустое место между кавычками - вписав туда имя конкретного экшна из того сета, который вы впишите между кавычками в строке var mySet = "";

Код:
docRef = activeDocument;
displayDialogs = DialogModes.NO;

var strtRulerUnits = preferences.rulerUnits;
preferences.rulerUnits = Units.CM;

// Общее имя сета откуда будут браться экшны
var mySet = "";

if (docRef.width > docRef.height)
// Landscape
{
	if (docRef.width / docRef.height >= 1.5 )
	{	
		// имя экшна выполняемого при данном условии
		var myAction = "";
	} else {
		// имя экшна выполняемого при данном условии
		var myAction = "";
	}
	
} else {
// Portret

	if (docRef.height / docRef.width >= 1.5 )
	{	
		// имя экшна выполняемого при данном условии
		var myAction = "";
	} else {
		// имя экшна выполняемого при данном условии
		var myAction = "";
	}

}

// выполнить экшн:
app.doAction (myAction, mySet);
	
preferences.rulerUnits = strtRulerUnits;
 

Bokshich

Участник
Сообщения
41
Реакции
0
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

greatdeal, большое человеческое Вам спасибо! Сейчас буду пробовать.

Небольшой вопросик по программированию: ява-скрипт для Web'а сильно отличается от явы-скрипта для Фотошопа, т.е. если куплю книгу "Ява для Web", смогу ли я почерпнуть из неё что-то полезное для написания сценариев под Фотошоп или полезней будет мучать PDF от Adobe ?

Проверил, скрипт работает на ура, ещё раз спасибо!
 

greatdeal

Забанен
Сообщения
469
Реакции
0
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15???

Ничем не отличается. Толерантность компилятора повыше только: можно забывать кое-где ставить ; и вместо == писать =. Ява ФШ - подмножество явы, оченно усеченная версия. Справка находится в пдф-ах среди шопского файла. Там есть описание интерфейса (объектной модели) и немного по самой яве. На английском, разумеется.
 

Vipe

Участник
Сообщения
52
Реакции
1
Ответ: Как соорудить Action что бы он ресайзил Landscape до15х21 а Portrait до 21х15?

Bokshich сказал(а):
К сожалению, скрипт нужен для разных фотографий, не обязательно строго пропорциональным 20x30.
А как быть тогда с лишним? Обрезать? .) А ну как автомат нужное рубанет? .)
 
Статус
Закрыто для дальнейших ответов.