Цитировать

Форум по СНПЧ: Скрипты для Фотошопа, Иллюстратора - Форум по СНПЧ

Перейти к содержимому

Новинки от Resetters: Правильная СНПЧ для Epson SC-P600 и СНПЧ для HP T120, T520 с подвесным рычагом-держателем шлейфа. Смотрим видео работы.

Важно

На форуме:
- запрещены никнеймы и подписи содержащие служебные символы и ссылки;
- запрещено название тем ЗАГЛАВНЫМИ буквами и содержащих слова «хэлп», «памагите», «срочно», либо украшательства «-!!!ХЭЛП!!!-»;
- запрещена реклама в любом виде;
- запрещено создание одинаковых тем или сообщений в разных разделах форума;
- запрещено написание всего сообщения ЗАГЛАВНЫМИ буквами, или шрифтом отличным от используемого по умолчанию. Выделяйте только необходимое;
- запрещено полное цитирование сообщений без необходимости;
- запрещено повторять вопросы, освещенные в ФАК;
- запрещено создание тем или сообщений без подробного описания сути;
- запрещен мат, албанский, жаргон;
- запрещено публичное обсуждение действий администрации;
- запрещены ответы в темы нарушающие правила форума;
За нарушения – БАН с удалением сообщений и тем.
Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Скрипты для Фотошопа, Иллюстратора Самодельные скрипты для автоматизации рутинной работы

|    Сообщение #1 Отправлено 10 Июнь 2016 - 09:15   AFY

Чтобы использовать скрипт, создайте текстовый документ и поменяйте его расширение с txt на jsx. Затем скопируйте этот файл в папку фотошопа /Presets/Scripts (/Наборы/Сценарии). Скрипт станет доступен после перезапуска в меню Файл - Скрипты - Название_файла_скрипта.

Поехали.

Календарик на любой месяц
#target photoshop

function Calendar() {

	var n = new Date();

	// script version
	this.Version = "3.0";

	// initial values of the font
	this.params = new Object();
	this.paramsFile = new File(app.preferencesFolder + "/script_params_calendar.txt");
	this.LoadParams = function() {
		var z = true;
		if (this.paramsFile.open("r")) {
			while (!this.paramsFile.eof) {
				var c = "", p = "", v = "";
				while (c != "=" && !this.paramsFile.eof) {
					c = this.paramsFile.read(1);
					if (c != "=") p += c;
				}
				while (c != "\n" && !this.paramsFile.eof) {
					c = this.paramsFile.read(1);
					if (c != "\n") v += c;
				}
				if (p == "Version") {
					if (v != this.Version || v == "undefined") {
						this.paramsFile.close();
						this.paramsFile.remove();
						z = false;
						break;
					}
				} else {
					if (v == "null") v = null;
					else if (v == "true") v = true;
					else if (v == "false") v = false;
					this.params[p] = v;
				}
			}
			this.paramsFile.close();
		} else z = false;
		return z;
	}
	if (!this.paramsFile.exists || !this.LoadParams()) {
		this.params = { // as to default
			FontName: "TimesNewRomanPSMT",
			FontSize: 50,
			AntiAlias: "AntiAlias.CRISP",
			Color0: "000000",
			Color1: "FF0000",
			VerticalDirection: true,
			IncreaseIndent: 1.5
		}
	}

	// all strings which are used in GUI and the document
	switch (app.locale.substr(0, 2)) {
		case "ru":
			this.str = {
				Title: "Календарь",
				Date: "Дата",
				Month: "Месяц(&M)",
				Year: "Год(&Y)",
				Parameters: "Параметры",
				FontName: "Шрифт(&F)",
				FontSize: "Размер шрифта(&S)",
				AntiAliasing: "Сглаживание(&A)",
				None: "Нет",
				Sharp: "Острее",
				Crisp: "Чётче",
				Strong: "Сильнее",
				Smooth: "Глаже",
				Color: "Цвет",
				Color0: "Будней(&W)",
				Color1: "Выходных(&D)",
				Vertical: "Вертикально(&V)",
				Horizontal: "Горизонтально(&H)",
				Indent: "Отступ(&I)",
				Language: "Язык(&L)",
				Ok: "OK",
				Cancel: "Отмена",
				Pixels: "пикселей",
				Points: "точек",
				MM: "мм.",
				IncorrectValue: "Неправильное значение",
				DaysOfWeek: "Дни недели",
				Dates: "Числа"
			}
			break;
		default:
			this.str = {
				Title: "Calendar",
				Date: "Date",
				Month: "&Month",
				Year: "&Year",
				Parameters: "Parameters",
				FontName: "&Font",
				FontSize: "Font &size",
				AntiAliasing: "&Antialiasing method",
				None: "None",
				Sharp: "Sharp",
				Crisp: "Crisp",
				Strong: "Strong",
				Smooth: "Smooth",
				Color: "Color",
				Color0: "&Work days",
				Color1: "Holi&days",
				Vertical: "&Vertical",
				Horizontal: "&Horizontal",
				Indent: "&Indent",
				Language: "&Language",
				Ok: "OK",
				Cancel: "Cancel",
				Pixels: "pixels",
				Points: "points",
				MM: "mm.",
				IncorrectValue: "Incorrect Value",
				DaysOfWeek: "Days of a week",
				Dates: "Dates"
			}
	}

	// strings which are contents of the document
	this.str.docLang = [
		["русский",
			["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
			["пн", "вт", "ср", "чт", "пт", "сб", "вс"]
		],
		["english",
			["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
			["mo", "tu", "we", "th", "fr", "sa", "su"]
		],
		["deutsch",
			["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "October", "November", "Dezember"],
			["mo", "di", "mi", "do", "fr", "sa", "so"]
		],
		["française",
			["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
			["lu", "ma", "me", "je", "ve", "sa", "di"]
		],
		["el español",
			["Enero de", "Febrero de", "Marzo de", "Abril de", "Mayo de", "Junio de", "Julio de", "Agosto de", "Septiembre de", "Octubre de", "Noviembre de", "Diciembre de"],
			["lu", "ma", "mi", "ju", "vi", "sá", "do"]
		],
		["italiano",
			["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
			["lu", "ma", "me", "gi", "ve", "sa", "do"]
		]
	].sort();

	// set units of measure
	switch (app.preferences.typeUnits) {
		case TypeUnits.MM: app.preferences.rulerUnits = Units.MM; var u = this.str.MM; break;
		case TypeUnits.POINTS: app.preferences.rulerUnits = Units.POINTS; var u = this.str.Points; break;
		default: app.preferences.rulerUnits = Units.PIXELS; var u = this.str.Pixels;
	}

	// create a script UI with placed parameters values
	this.dlgMain = new Window("dialog { \
		orientation: 'column', alignChildren: 'fill', \
 		p0: Panel { margins: [10, 15, 10, 10], alignChildren: 'right', text: '" + this.str.Date + "', \
			g0: Group { orientation: 'row', spacing: 5, \
				l0: StaticText { text: '" + this.str.Month + ":' } \
				t0: EditText { preferredSize: [45, 20], text: '" + (1+n.getMonth()) + "' } \
				l1: StaticText { text: ' " + this.str.Year + ":' } \
				t1: EditText { preferredSize: [45, 20], text: '" + n.getFullYear() + "' } } \
			g1: Group { orientation: 'row', spacing: 5, \
				l: StaticText { text: '" + this.str.Language + ":' } \
				s: DropDownList { preferredSize: [80, 22] } } } \
		p1: Panel { margins: [10, 15, 10, 10], alignChildren: 'right', text: '" + this.str.Parameters + "', \
			g0: Group { orientation: 'row', spacing: 5, \
				l: StaticText { text: '" + this.str.FontName + ":' } \
				s: DropDownList { preferredSize: [165, 22] } } \
			g1: Group { orientation: 'row', spacing: 5, \
				l: StaticText { text: '" + this.str.FontSize + ":' } \
				t: EditText { preferredSize: [40, 20], fractionalOpportunity: true, text: '" + this.params.FontSize.toString().replace(/\./g, ',') + "' } \
				u: StaticText { text: '" + u + "' } } \
			g2: Group { orientation: 'row', spacing: 5, \
				l: StaticText { text: '" + this.str.AntiAliasing + ":' } \
				s: DropDownList { preferredSize: [80, 22] } } \
			g3: Group { orientation: 'row', spacing: 5,\
				l: StaticText { text: '" + this.str.Color + ":' } \
				b0: Button { preferredSize: [80, 22], text: '" + this.str.Color0 + "', helpTip: '" + this.params.Color0 + "' } \
				b1: Button { preferredSize: [80, 22], text: '" + this.str.Color1 + "', helpTip: '" + this.params.Color1 + "' } } \
			g4: Group { orientation: 'row', spacing: 5, \
				r0: RadioButton { value: " + this.params.VerticalDirection + ", text: '" + this.str.Vertical + "' } \
				r1: RadioButton { value: " + !this.params.VerticalDirection + ", text: '" + this.str.Horizontal + "' } } \
			g5: Group { orientation: 'row', spacing: 5, \
				l: StaticText { text: '" + this.str.Indent + ":' } \
				s: Slider { value: " + this.params.IncreaseIndent + ", minvalue: 0.5, maxvalue: 10 } \
				t: EditText { preferredSize: [113, 20], fractionalOpportunity: true, text: '" + this.params.IncreaseIndent.toString().replace(/\./g, ',') + "' } } } \
		btns: Group { alignment: 'right', margins: [0, 10, 0, 0] } \
	}", this.str.Title);

	var d = this.dlgMain;

	for (var i = 0; i < this.str.docLang.length; i++) {
		d.p0.g1.s.add("item", this.str.docLang[i][0]);
		if (this.str.docLang[i][0] == "русский") d.p0.g1.s.selection = i;
	}
	if (d.p0.g1.s.selection == null) d.p0.g1.s.selection = 0;

	// update font list
	app.refreshFonts();

	for (var i = 0; i < app.fonts.length; i++) {
		d.p1.g0.s.add("item", app.fonts[i].name);
		if (app.fonts[i].postScriptName == this.params.FontName) d.p1.g0.s.selection = i;
	}
	if (d.p1.g0.s.selection == null) d.p1.g0.s.selection = 0;
	this.params.FontName = app.fonts[d.p1.g0.s.selection.index].postScriptName;

	d.p1.g2.s.add("item", this.str.None);
	d.p1.g2.s.add("item", this.str.Sharp);
	d.p1.g2.s.add("item", this.str.Crisp);
	d.p1.g2.s.add("item", this.str.Strong);
	d.p1.g2.s.add("item", this.str.Smooth);
	switch (this.params.AntiAlias) {
		case "AntiAlias.NONE": d.p1.g2.s.selection = 0; this.params.AntiAlias = AntiAlias.NONE; break;
		case "AntiAlias.SHARP": d.p1.g2.s.selection = 1; this.params.AntiAlias = AntiAlias.SHARP; break;
		case "AntiAlias.CRISP": d.p1.g2.s.selection = 2; this.params.AntiAlias = AntiAlias.CRISP; break;
		case "AntiAlias.STRONG": d.p1.g2.s.selection = 3; this.params.AntiAlias = AntiAlias.STRONG; break;
		case "AntiAlias.SMOOTH": d.p1.g2.s.selection = 4; this.params.AntiAlias = AntiAlias.SMOOTH; break;
	}

	d.p1.g5.s.preferredSize.width = 40;
	d.p1.g5.s.helpTip = (d.p1.g5.s.value < 0) ? "-" : "";
	d.p1.g5.s.helpTip += d.p1.g5.s.value.toString().replace(/\./g, ",");

	d.defaultElement = d.btns.add("button", undefined, this.str.Ok);
	d.cancelElement = d.btns.add("button", undefined, this.str.Cancel);

	d.graphics.backgroundColor = d.graphics.newBrush(d.graphics.BrushType.THEME_COLOR, "appDialogBackground");

	// descriptions of the event handlers
	d.p0.g0.t0.addEventListener("keydown", NumericEditKeyboardHandler);
	d.p0.g0.t1.addEventListener("keydown", NumericEditKeyboardHandler);
	d.p1.g1.t.addEventListener("keydown", NumericEditKeyboardHandler);
	d.p1.g5.t.addEventListener("keydown", NumericEditKeyboardHandler);

	d.p1.g0.s.onChange = function() {
		gCalendar.params.FontName = app.fonts[this.selection.index].postScriptName;
	}
	d.p1.g2.s.onChange = function() {
		switch (this.selection.index) {
			case 0: gCalendar.params.AntiAlias = AntiAlias.NONE; break;
			case 1: gCalendar.params.AntiAlias = AntiAlias.SHARP; break;
			case 2: gCalendar.params.AntiAlias = AntiAlias.CRISP; break;
			case 3: gCalendar.params.AntiAlias = AntiAlias.STRONG; break;
			case 4: gCalendar.params.AntiAlias = AntiAlias.SMOOTH; break;
		}
	}
	d.p1.g3.b0.onClick = function() {
		app.foregroundColor.rgb.hexValue = gCalendar.params.Color0;
		if (app.showColorPicker()) gCalendar.params.Color0 = this.helpTip = app.foregroundColor.rgb.hexValue;
	}
	d.p1.g3.b1.onClick = function() {
		app.foregroundColor.rgb.hexValue = gCalendar.params.Color1;
		if (app.showColorPicker()) gCalendar.params.Color1 = this.helpTip = app.foregroundColor.rgb.hexValue;
	}
	d.p1.g4.r0.onClick = function() {
		gCalendar.params.VerticalDirection = true;
	}
	d.p1.g4.r1.onClick = function() {
		gCalendar.params.VerticalDirection = false;
	}
	d.p1.g5.s.onChange = function() {
		var t = this.value.toString().replace(/\./g, ",");
		this.helpTip = (this.value < 0) ? "-" : "";
		this.helpTip += t;
		this.parent.t.text = t;
		gCalendar.params.IncreaseIndent = this.value;
	}
	d.p1.g5.t.onChange = function() {
		var t = parseFloat(this.text.replace(/\,/g, "."));
		if (isNaN(t) || t < this.parent.s.minvalue || t > this.parent.s.maxvalue) {
			d.p1.g5.s.value = t;
			this.parent.s.helpTip = (t < 0) ? "-" : "";
			this.parent.s.helpTip += this.text;
			gCalendar.params.IncreaseIndent = this.parent.s.value;
		}
	}
	d.defaultElement.onClick = function() {
		var m = parseInt(d.p0.g0.t0.text), y = parseInt(d.p0.g0.t1.text);
		gCalendar.params.FontSize = parseFloat(d.p1.g1.t.text.replace(/,/g, "."));
		gCalendar.params.IncreaseIndent = parseFloat(d.p1.g5.t.text.replace(/,/g, "."));
		if (!isNaN(m) && m > 0 && m < 13) n.setMonth(--m);
		else {
			d.p0.g0.t0.active = true;
			alert(gCalendar.str.IncorrectValue + ".");
			return;
		}
		if (!isNaN(y) && y > 1900 && d.p0.g0.t1.text.length < 5) n.setFullYear(y);
		else {
			d.p0.g0.t1.active = true;
			alert(gCalendar.str.IncorrectValue + ".");
			return;
		}
		if (isNaN(gCalendar.params.FontSize) || gCalendar.params.FontSize <= 0) {
			d.p1.g1.t.active = true;
			alert(gCalendar.str.IncorrectValue + ".");
			return;
		}
		if (isNaN(gCalendar.params.IncreaseIndent) || gCalendar.params.IncreaseIndent < d.p1.g5.s.minvalue || gCalendar.params.IncreaseIndent > d.p1.g5.s.maxvalue) {
			d.p1.g5.t.active = true;
			alert(gCalendar.str.IncorrectValue + ".");
			return;
		}
		d.close(true); // return 1 if changed values have been checked successfully
	}
	d.cancelElement.onClick = function() {
		d.close(false); // return 0
	}

	// function of processing of the document
	this.Make = function() {

		n.setDate(1);
		n.setHours(12);
		var x = n.getDay();
		if (x == 0) x = 7;

		var w = 0, h = 0, c = SolidColor;
		c.rgb.hexValue = this.params.Color0;

		var doc = app.documents.add(8 * this.params.IncreaseIndent * this.params.FontSize, 8 * this.params.IncreaseIndent * this.params.FontSize, 72, this.str.Title + "_" + (1+n.getMonth()) + "_" + n.getFullYear(), NewDocumentMode.RGB, DocumentFill.TRANSPARENT);

		var gr = [];
		gr[0] = doc.layerSets.add();
		gr[0].name = this.str.Title;
		gr[1] = gr[0].layerSets.add();
		gr[1].name = this.str.Dates;
		gr[2] = gr[0].layerSets.add();
		gr[2].name = this.str.DaysOfWeek;
		var l = doc.artLayers[0];
		l.isBackgroundLayer = false;
		l.move(gr[0], ElementPlacement.PLACEATBEGINNING);
		l.kind = LayerKind.TEXT;
		with (l.textItem) {
			position = [doc.width.value / 2, doc.height.value / 8 - doc.height.value / 32];
			justification = Justification.CENTER;
			font = this.params.FontName;
			size = this.params.FontSize * 1.25;
			antiAliasMethod = this.params.AntiAlias;
			color = c;
			fauxBold = true;
			contents = this.str.docLang[d.p0.g1.s.selection.index][1][n.getMonth()] + " " + n.getFullYear();
		}
		for (var i = 0; i < 7; i++) {
			w = (this.params.VerticalDirection) ? 0 : doc.width.value / 7 * i;
			h = (this.params.VerticalDirection) ? doc.height.value / 8 * (i + 2) : doc.height.value / 4;
			l = gr[2].artLayers.add();
			l.kind = LayerKind.TEXT;
			with (l.textItem) {
				position = [w + doc.width.value / 14, h - doc.height.value / 32];
				justification = Justification.CENTER;
				font = this.params.FontName;
				size = this.params.FontSize * 0.75;
				antiAliasMethod = this.params.AntiAlias;
				c.rgb.hexValue = (i > 4) ? this.params.Color1 : this.params.Color0;
				color = c;
				contents = this.str.docLang[d.p0.g1.s.selection.index][2][i];
			}
		}
		for (var i = 1, p = 2; parseInt(d.p0.g0.t0.text) > n.getMonth(); i++) {
			w = (this.params.VerticalDirection) ? doc.width.value / 7 * (p - 1) : doc.width.value / 7 * (x + i - 2);
			h = (this.params.VerticalDirection) ? doc.height.value / 8 * (x + i) : doc.height.value / 8 * (p + 1);
			l = gr[1].artLayers.add();
			l.kind = LayerKind.TEXT;
			with (l.textItem) {
				position = [w + doc.width.value / 14, h - doc.height.value / 32];
				justification = Justification.CENTER;
				font = this.params.FontName;
				size = this.params.FontSize;
				antiAliasMethod = this.params.AntiAlias;
				c.rgb.hexValue = (x + i > 6) ? this.params.Color1 : this.params.Color0;
				color = c;
				contents = i;
			}
			if (x + i > 7) {
				++p;
				x -= 7;
			}
			n.setDate(1 + i);
		}

		doc.resizeCanvas(doc.width.value + this.params.FontSize, doc.height.value + this.params.FontSize, AnchorPosition.MIDDLECENTER);
		doc.activeLayer = gr[0];

		// save parameters in the file
		if (!this.paramsFile.readonly) {
			this.paramsFile.encoding = "UTF8";
			if (this.paramsFile.open("w", "TEXT", "????")) {
				this.paramsFile.write("\uFEFF");
				this.paramsFile.writeln("Version=" + this.Version);
				for (var p in this.params) this.paramsFile.writeln(p + "=" + this.params[p]);
				this.paramsFile.close();
			}
		}

	}

}

function NumericEditKeyboardHandler(event) { // keyboard event handler for a numeric input only
	try {
		var code = parseInt("0x" + event.keyIdentifier.substr(2));
		if (! (KeyIsNumeric(event, code) || KeyIsCommaOrPeriod(event, code) || KeyIsLRArrow(event) || KeyIsDelete(event) || KeyIsTabEnterEscape(event))) event.preventDefault();
	} catch(e) {}
}
function KeyHasModifier(event) {
	return event.shiftKey || event.ctrlKey || event.altKey || event.metaKey;
}
function KeyIsNumeric(event, code) {
	return code >= 48 && code <= 57 && !KeyHasModifier(event);
}
function KeyIsCommaOrPeriod(event, code) {
	return (code == 44 || code == 46) && !KeyHasModifier(event) && event.target.fractionalOpportunity && event.target.text.indexOf(",") == -1 && event.target.text.indexOf(".") == -1;
}
function KeyIsLRArrow(event) {
	return (event.keyName == "Left" || event.keyName == "Right") && ! (event.altKey || event.metaKey);
}
function KeyIsDelete(event) {
	return (event.keyName == "Backspace" || event.keyName == "Delete") && !event.ctrlKey;
}
function KeyIsTabEnterEscape(event) {
	return event.keyName == "Tab" || event.keyName == "Enter" || event.keyName == "Escape";
}

try {
	// keep a some preferences
	uDialogMode = app.displayDialogs;
	app.displayDialogs = DialogModes.NO;
	uUnits = app.preferences.rulerUnits;
	uForegroundColor = app.foregroundColor.rgb.hexValue;

	// create global object
	gCalendar = new Calendar();
	if (gCalendar.dlgMain.show() == 1) {
		gCalendar.Make();
		app.bringToFront();
	}

	// set the kept preferences
	app.preferences.rulerUnits = uUnits;
	app.foregroundColor.rgb.hexValue = uForegroundColor;
	app.displayDialogs = uDialogMode;

	// cleaned from objects
	gCalendar = null;
	uDialogMode = null;
	uUnits = null;
	uForegroundColor = null;

} catch(e) {}

После использования скрипта сохраняются последние шрифт, размер и т.д. в "%AppData%\Adobe\Adobe Photoshop ...\Adobe Photoshop ... Settings\script_params_calendar.txt"

Сообщение отредактировал AFY: 10 Июнь 2016 - 09:22


|    Сообщение #2 Отправлено 12 Июнь 2016 - 13:20   AFY

Скрипт подставляет в слой дату съёмки из exif
#target photoshop

if (app.documents.length > 0) {
	with (app.activeDocument) {
		for (e = info.exif.length-1; e >= 0; --e) {
			try {
				if ((info.exif[e][2] == "36867" || info.exif[e][2] == "36868") && info.exif[e][1].length > 0) {
					var u = app.preferences.rulerUnits, s = 0.075 * Math.min(width.as("pt"), height.as("pt"));
					app.preferences.rulerUnits = Units.POINTS;
					artLayers.add().kind = LayerKind.TEXT;
					activeLayer.textItem.position = [width-s, height-s];
					activeLayer.textItem.size = s;
					activeLayer.textItem.justification = Justification.RIGHT;
					activeLayer.textItem.contents = info.exif[e][1];
					app.preferences.rulerUnits = u;
					break;
				}
			}
			catch(e) {}
		}
	}
}
app.bringToFront();


|    Сообщение #3 Отправлено 12 Июнь 2016 - 14:36   localhost

Прикольно.
А язык какой?

Тут узнается, и С, и PHP, и JS. А может VBS?
Ясно, что не PHP, ибо нет долларов и прочего.
Canon EOS 500D + 18-55 IS II + 50 mm STM + YoungNuo SpeedLite YN565 EX II, PIXMA MG5340 + OCP BKP235, EPSON L800 + Hongsam/WWM/InkTec, T50 + СНПЧ IST + Hongsam/WWM/InkTec

|    Сообщение #4 Отправлено 12 Июнь 2016 - 14:49   AFY

JS дополненный адобовскими объектами и функциями. VBS и AppleScript тоже можно, но они не универсальны.

|    Сообщение #5 Отправлено 12 Июнь 2016 - 17:25   localhost

VBS, вероятно, не будет работать в Mac. Ну а AdobeScript-то чего? Он должен работать, и в маке, и в винде.
Canon EOS 500D + 18-55 IS II + 50 mm STM + YoungNuo SpeedLite YN565 EX II, PIXMA MG5340 + OCP BKP235, EPSON L800 + Hongsam/WWM/InkTec, T50 + СНПЧ IST + Hongsam/WWM/InkTec

|    Сообщение #6 Отправлено 12 Июнь 2016 - 17:30   AFY

Не AdobeScript, AppleScript :)

|    Сообщение #7 Отправлено 12 Июнь 2016 - 18:17   localhost

AFY, это особенности человеческого мозга. Некий ассоциативный ряд + в обоих словах 5 букв и они начинаются и заканчиваются одинаково. :biggrin:

Короче, как-то так
Прикрепленное изображение: 4708603.jpg
Canon EOS 500D + 18-55 IS II + 50 mm STM + YoungNuo SpeedLite YN565 EX II, PIXMA MG5340 + OCP BKP235, EPSON L800 + Hongsam/WWM/InkTec, T50 + СНПЧ IST + Hongsam/WWM/InkTec

|    Сообщение #8 Отправлено 28 Июнь 2016 - 13:15   AFY

Замаевало сохранять отшопленные фотки из разных папок в папку для потоковой печати. Посадил такой скрипт на горячие клавиши Ctrl+Alt+S. Реально ускорился.

#target photoshop

if (app.documents.length > 0) {

	var p = "~/Hot Folder/"; // путь для сохранения
	var c = 1 + Folder(p).getFiles("*.jpg").length;
	var r = "";
	var f = null;
	function crFName() {
		for (i = c; i < 1000; i *= 10) r += "0";
		f = new File(p+r+c+".jpg");
		if (f.exists) {
			c++;
			r = "";
			crFName();
		}
	}
	crFName();

	if (confirm(p+r+c+".jpg\nСохранить?")) {
		var d = new Folder(p);
		if (!d.exists) d.create();
		var o = new JPEGSaveOptions();
		with (o) {
			embedColorProfile = true;
			formatOptions = FormatOptions.STANDARDBASELINE;
			matte = MatteType.NONE;
			quality = 12;
		}
		if (app.activeDocument.saveAs(f, o, true, Extension.LOWERCASE)) app.beep();
	}

}


То же самое для tiff'a
#target photoshop

if (app.documents.length > 0) {

	var p = "~/Hot Folder/"; // путь для сохранения
	var c = 1 + Folder(p).getFiles("*.tif").length;
	var r = "";
	var f = null;
	function crFName() {
		for (i = c; i < 1000; i *= 10) r += "0";
		f = new File(p+r+c+".tif");
		if (f.exists) {
			c++;
			r = "";
			crFName();
		}
	}
	crFName();

	if (confirm(p+r+c+".tif\nСохранить?")) {
		var d = new Folder(p);
		if (!d.exists) d.create();
		var o = new TiffSaveOptions();
		with (o) {
			embedColorProfile = true;
			alphaChannels = true;
			layers = true;
			spotColors = false;
			imageCompression = TIFFEncoding.NONE;
			interleaveChannels = true;
			saveImagePyramid = false;
			transparency = true;
			layerCompression = LayerCompression.RLE;
		}
		if (app.activeDocument.saveAs(f, o, true, Extension.LOWERCASE)) app.beep();
	}

}


|    Сообщение #9 Отправлено 11 Июль 2017 - 23:35   AFY

Есть такой плагин, который пишет в виде скрипта все ваши действия. Хоть такие скрипты и не понять, не входите сразу в ступор, их можно использовать, например, заменяя какие-то величины арифметическими действиями с условием и т.п.
AdobePhotoshop_ScriptListener
И, да, этот плагин будет писать ваши действия до тех пор, пока сам находится в папке плагинов. Поэтому его можно использовать в последовательности: запустил фотошоп; выполнил какое-то действие; закрыл фотошоп; удалил плагин; подправил хитро скрипт; profit! )

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей

Скачать обновленную версию бесплатной программы PrintHelp, купить Код Сброса - PrintHelp.info