skip to Main Content
Создание блокнота

Началось с обложки, что нибудь рельефное на синем фоне, пружина по длинной стороне.

Еще одна задача, сделать внутреннюю страничку блокнота с планом на неделю.

Выбранный макет с горой, оправили в типографию, напечаталось темновато, накидал новый макет.

Переделал на пружину сверху.

Еще задача, сделать сетку календаря на 4 года. Пришлось углубиться в применения javascript для фотошоп, написать сценарий создания сетки календарей. Готового подходящего скрипта не нашлось, код пришлось дописывать под задачу. Через несколько часов результат меня порадовал, но на создание сетки одного года скриптом уходит примерно 15 минут, процесс не быстрый.

JavaScript для Photoshop создание сетки календаря

Все оказалось предельно просто, создается файл .jsx в папке фотошопа ПРЕСЕТЫ/СКРИПТЫ

Если кто ищет скрипт для создания календаря в фотошопе приложу его далее. Этот скрипт может создать сетку календаря на любой год. В планах дописать нумерацию недель в году.

Листинг calendar_script.jsx

/* Настройки документа */

var defaultRulerUnits = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
width = 1280;
height = 800;
resolution = 72;
year = prompt(‘Which Year’, »);
year = parseInt(year);
docName = «Photoshop » + year + » Calender»;

/* Первоначальные цвета */
normalColor = new SolidColor();
highlightColor = new SolidColor();
backColor = new SolidColor();
normalColor.rgb.hexValue = «ffffff»;
highlightColor.rgb.hexValue = «a4b1d1»;
backColor.rgb.hexValue = «1b4392»;

/* дни недели, месяцы */
weekdays = new Array («Пн»,»Вт»,»Ср»,»Чт»,»Пт»,»Сб»,»Вс»);
months = new Array(«Январь», «Февраль»,
«Март», «Апрель», «Май», «Июнь», «Июль»,
«Август», «Сентябрь»,
«Октябрь», «Ноябрь», «Декабрь»);

/* создание нового PSD документа */
doc = app.documents.add(width, height, resolution, docName, NewDocumentMode.RGB);
doc.selection.selectAll();
doc.selection.fill(backColor);
doc.selection.deselect();

/* Картинка на задний фон */
///file = app.openDialog();
//if (file[0]) {
//app.load(file[0]);
///backFile = app.activeDocument;
//backFile.resizeImage(width, height);
//backFile.selection.selectAll();
//backFile.selection.copy();
//backFile.close(SaveOptions.DONNOTSAVECHANGES);
//doc.paste();
//doc.layers[0].name = «Background Image»;
//}

/* календарная сетка */
for (currentMonth = 0; currentMonth < 12; currentMonth++) {
x = currentMonth % 4;
y = Math.floor(currentMonth/4);
group = doc.layerSets.add();
group.name = months[currentMonth];
for (currentWeekday = 0; currentWeekday < 7; currentWeekday++) {

z = currentWeekday
days = group.artLayers.add();
days.kind = LayerKind.TEXT;
days.name = weekdays[currentWeekday];
days.textItem.color = normalColor;
days.textItem.size = 18;
days.textItem.kind = TextType.PARAGRAPHTEXT;
days.textItem.justification = Justification.CENTER;
days.textItem.height = 18;
days.textItem.width = 24;
days.textItem.contents = weekdays[currentWeekday];
days.textItem.position = new Array( (65+(300*x)+(24*(z+1))), (57+(210*y)));

}

var first = new Date(year, currentMonth, 1).getDay() + 6;
var totalDays = new Date (year, (currentMonth + 1), 0).getDate();
for (numDate = 0; numDate < totalDays; numDate ++) {

m = ((first + numDate) % 7);
n = Math.floor((first + numDate) / 7);

text = numDate + 1;
if (text < 10) {
//если нужны цифры до 9 вида 01,02,03…
//text = «0» + text;
text = text;
}
numeralDate = group.artLayers.add();
numeralDate.kind = LayerKind.TEXT;
numeralDate.name = «Numeral»;
numeralDate.textItem.color = normalColor;
numeralDate.textItem.size = 18;
numeralDate.textItem.kind = TextType.PARAGRAPHTEXT;
numeralDate.textItem.justification = Justification.CENTER;
numeralDate.textItem.height = 18;
numeralDate.textItem.width = 24;
numeralDate.textItem.contents = text;
if (first <= 6) {

numeralDate.textItem.position = new Array( (89+(300*x)+(24*m)), (93+(210*y)+(18*n)));

} else {
numeralDate.textItem.position = new Array( (89+(300*x)+(24*m)), (75+(210*y)+(18*n)));
}
}

monthName = group.artLayers.add();
monthName.kind = LayerKind.TEXT;
monthName.name = months[currentMonth];
monthName.textItem.color = normalColor;
monthName.textItem.size = 28;
monthName.textItem.kind = TextType.PARAGRAPHTEXT;
monthName.textItem.justification = Justification.RIGHT;
monthName.textItem.height = 35;
monthName.textItem.width = 145;
monthName.textItem.contents = months[currentMonth];
monthName.rotate(-90);
monthName.textItem.position = new Array( (55+(300*x)), (202+(210*y)));

//сведение слоев в 1
//app.activeDocument.flatten();
}

/* Год */
yearLayer = doc.artLayers.add();
yearLayer.kind = LayerKind.TEXT;
yearLayer.name = year;
yearLayer.textItem.contents = year;
yearLayer.textItem.size = 72;
yearLayer.textItem.color = highlightColor;
yearLayer.textItem.position = new Array(1050, 730);

/* Линия */
line = doc.artLayers.add();
line.name = «Line»;
region = Array(Array(80,729), Array(1000, 729), Array(1000, 730), Array(80, 730));
doc.selection.select(region);
doc.selection.fill(normalColor);
doc.selection.deselect();

Видео результата работы яваскипта по созданию сетки календаря

Back To Top