Адрес для входа в РФ: exler.world

А вот такой вопрос по Photoshop

30.01.2024 11:39  6392   Комментарии (42)

Смотрите, есть задача: взять картинку, отличную от формата 16:9 (например, квадрат или прямоугольник, чья ширина меньше высоты, умноженной на 1,8), и ее нужно привести к формату 16:9, просто добавив равномерно слева-справа размер холста (именно размер холста, а не растягивая картинку), чтобы у картинки ширина стала как полагается.

Понятно, как это сделать вручную: вызвать "Размер холста", там задать нужный размер ширины, дорисовать холст, после чего получим картинку 16:9.

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

У меня в Photoshop используется немало наборов операций, но они все - под фиксированные размеры. А вот чтобы работать с изображениями разных размеров по формуле - я с таким не сталкивался. Есть ли такое решение? Буду благодарен за советы. 

Upd: Подсказали простое и изящное решение. Мне же в конце концов надо получить картинку 800х450 (иллюстрация для сайта). Картинки, которые нужно обработать до нужного соотношения, практически всегда имеют высоту больше, чем 450. В результате нужно просто создать Action, в котором картинку ресайзить до высоты 450, а потом размер холста по ширине увеличить до 800. И всё, никаких формул!

30.01.2024 11:39
Комментарии 42

Как уже писал yuriyg ImageMagick очень удобен для автоматизации. Вот описание его команды
convert, которая позволяет делать практически всё, что угодно.
30.01.24 15:07
0 1

В чистом виде (с кнопарем в экшнах) для любой кастомной картинки задача решается через скрипт и экшн, вызывающий скрипт, таким образом:
1. Скрипт следующего содержания с расширением ".js" и значимым названием (к примеру, CropTo16_9.js) сохранить в папку скриптов по адресу "C:\Program Files\Adobe\Adobe Photoshop 20##\Presets\Scripts":
var doc = app.activeDocument;
var currentHeight = doc.height;
var newWidth = currentHeight * 1.777777;
doc.resizeCanvas(newWidth, currentHeight, AnchorPosition.MIDDLECENTER);
2. Фотошоп перезапустить. Создать экшн, из контекстного меню в панели Actions выбрать Insert Menu Item. Далее выбрать File->Scripts->CropTo16_9
30.01.24 13:28
0 5

Лукьяненко напомнило 😄
Все очень просто. Решетка из арматуры строго геометрична. Будь на моем месте Маньяк, за минуту написал бы скрипт для спуска и пошел пить кофе. Почему тот, кто может выйти из глубины, не умеет писать программы, и наоборот…
30.01.24 14:46
0 2

Черт побьери.
А я уж бьіло полез искать вариант решения. Так задачка перестает бьіть интересной...
30.01.24 12:47
0 0

Вот что говорит начальник транспортного цеха (ChatGPT4) 😄

В Photoshop, к сожалению, нельзя напрямую использовать формулы для изменения размера холста в действиях (Actions). Действия в Photoshop обычно фиксируют конкретные значения, а не относительные или вычисляемые параметры. Однако, вы можете решить вашу задачу с помощью написания скрипта на JavaScript для Photoshop.

Скриптинг в Photoshop позволяет использовать более сложные операции, включая вычисления и условные операторы. В вашем случае, скрипт может выглядеть следующим образом:

Определить текущие размеры изображения.
Вычислить необходимую ширину, чтобы соотношение стало 16:9 (то есть удвоить высоту).
Изменить размер холста до вычисленной ширины, центрируя изображение.
Ниже приведен пример такого скрипта на JavaScript для Photoshop:

var doc = app.activeDocument;
var currentHeight = doc.height;
var newWidth = currentHeight * 2;

// Изменение размера холста, центрируя изображение
doc.resizeCanvas(newWidth, currentHeight, AnchorPosition.MIDDLECENTER);
Чтобы использовать этот скрипт:

Откройте Photoshop и ваше изображение.
Найдите в меню "Файл" → "Сценарии" → "Обзор", и выберите файл скрипта.
Запустите скрипт.
Этот скрипт автоматически изменит размер холста вашего изображения до соотношения сторон 16:9, добавляя необходимое пространство слева и справа от изображения.

Обратите внимание, что для использования скриптов необходимо иметь базовые знания работы с JavaScript и настройками Photoshop.
A_F
30.01.24 12:20
0 0

var doc = app.activeDocument;
var currentHeight = doc.height;
var newWidth = currentHeight * 2;
Этот скрипт автоматически изменит размер холста вашего изображения до соотношения сторон 16:9
Дожили. Компьютер не умеет шестнадцать на девять разделить.

Ну то есть только через скрипты? Ясно, спасибо.
30.01.24 12:23
0 0

Добавлю от себя еще, что вот так можно выставить нужный цвет на бэкграунд

var backgroundC = new SolidColor();
backgroundC.rgb.red = 255;
backgroundC.rgb.green = 255;
backgroundC.rgb.blue = 255;
backgroundColor = backgroundC;
30.01.24 12:25
0 0

> var newWidth = currentHeight * 2;

До 18:9 - и это еще не проверяя работоспособность самого метода. ИИ такой ИИ...
30.01.24 12:27
0 1

Вот так делаю 1x1

var doc = activeDocument
doc.resizeCanvas(Math.max(doc.width,doc.height),Math.max(doc.width,doc.height))

2x1 нужно допилить
30.01.24 12:30
0 0

FastStone -> F3
30.01.24 12:11
1 1

FastStone -> F3
Я в курсе. И что? Я спрашивал не об этом, если внимательно прочитать пост.
30.01.24 12:16
3 1

1. Открыть палитру Actions. Создать новое действие. Обозвать его как-то. Кропка "REC" включится автоматически.
2. Вкладка Image/Canvas size. Там выбрать проценты вместо пикселей. Ручками дописать к размерам "*2" (умножить на два). К обоим размерам. Проверить, чтобы пимпа 'Relative" была отжата. Нажать ОК.
3. Нажать кнопку Stop на палитре Actions.

Все. Теперь в Actions есть соответствующий макрос. Нажать на него, чтобы все заверте...
30.01.24 12:10
0 0

Направление верное, но как я понял, задача не та. Нужно картинку рандомного размера (ширина таки меньше высоты) довести до 16:9.
30.01.24 12:16
0 0

Я же написал, что картинка - неизвестного размера. И ширина там должна зависеть от высоты в результате. Никакими процентами не отделаться.
30.01.24 12:17
0 0

Если высота не меняется, то не трогать поле Height, а умножить только поле Width (на 1,78, если речь идет о 16х9). Все остальное точно так же.
30.01.24 12:22
0 0

Если высота не меняется, то не трогать поле Height, а умножить только поле Width (на 1,78, если речь идет о 16х9). Все остальное точно так же.
(терпеливо) Я и написал, что мне нужно в операции сделать Width=Height*1.8. И спросил, как это сделать в операции (макросе) и можно ли вообще.
30.01.24 12:26
0 0

1. Открыть палитру Actions. Создать новое действие. Обозвать его как-то. Кропка "REC" включится автоматически.2. Вкладка Image/Canvas size. Там выбрать проценты вместо пикселей. Ручками дописать к размерам "*2" (умножить на два). К обоим размерам. Проверить, чтобы пимпа 'Relative" была отжата. Нажать ОК.3. Нажать кнопку Stop на палитре Actions.Все. Теперь в Actions есть соответствующий макрос. Нажать на него, чтобы все заверте...[/QUOTE[QUOTE](терпеливо) Я и написал, что мне нужно в операции сделать Width=Height*1.8. И спросил, как это сделать в операции (макросе) и можно ли вообще.
можно поступить хитро, написать макрос который сначала будет приводить любую картинку пропорционально к одной высоте а потом добавлять/обрезать уши по сторонам до желаемого размера

можно поступить хитро, написать макрос который сначала будет приводить любую картинку пропорционально к одной высоте а потом добавлять/обрезать уши по сторонам до желаемого размера
Например
1 действием задаем картинке 900 пикселей высоту с включенным замочком пропорции
2 действием задаем размер холста 1600 пикселей

можно поступить хитро, написать макрос который сначала будет приводить любую картинку пропорционально к одной высоте а потом добавлять/обрезать уши по сторонам до желаемого размера
Так, а вот это действительно простое и изящное решение, спасибо. Можно же не мудрить. Обычно картинки больше, чем нужно, и я их сначала привожу к нужному соотношению, а потом уменьшаю до 800 по ширине. Если при этом в Action просто добавить сначала уменьшение высоты изображения до 450, а потом холст увеличивать до 800 - ну и все, задача решена! Спасибо большое!

Так, а вот это действительно простое и изящное решение, спасибо. Можно же не мудрить. Обычно картинки больше, чем нужно, и я их сначала привожу к нужному соотношению, а потом уменьшаю до 800 по ширине. Если при этом в Action просто добавить сначала уменьшение высоты изображения до 450, а потом холст увеличивать до 800 - ну и все, задача решена! Спасибо большое!
решение работает во все стороны, если изображение меньше оно увеличивает если больше уменьшает. 1 действие image size второе canvas size, 13 лет уже не работаю в фотошопе поэтому только что проверил на всякий случай, все работает. Там же можно и выбрать цвет фона добавляемого по умолчанию, например черный, а если в екшне поставить галочку напротив действия то оно при каждом срабатывании будет выполнять его но не закрывать окно, и можно выбрать например другой цвет фона и жмакнуть только ОК

Прошу прощения, пропустил этот момент.
Одной кнопкой без скриптов не получится.

Надо до того зайти в Image Size, там вбить нужный Width (при этом соотношение должно быть залочено), а потом уже жать на кнопку макроса. Все равно быстрее, чем весь процесс только ручками делать.

Если же нужный Width, к которому надо привести картинку (вне зависимости от исходных размеров) фиксированный (например 1080) то можно записать два макроса. Один на Image Size, второй на Canvas Size. Они все равно рядом в палитре болтаться будут.
30.01.24 12:44
0 0

Тю, все пропустил, пока кота от клавиатуры отгонял)
30.01.24 12:46
0 3

Прошу прощения, пропустил этот момент.Одной кнопкой без скриптов не получится.Надо до того зайти в Image Size, там вбить нужный Width (при этом соотношение должно быть залочено), а потом уже жать на кнопку макроса. Все равно быстрее, чем весь процесс только ручками делать.Если же нужный Width, к которому надо привести картинку (вне зависимости от исходных размеров) фиксированный (например 1080) то можно записать два макроса. Один на Image Size, второй на Canvas Size. Они все равно рядом в палитре болтаться будут.
а нафига два? )))) можно все в один впихнуть )

Да, вот мы к этому в итоге и пришли: проще подогнать размер под нужный (картинка итоговая должна быть 800х450), а потом холст увеличить до 800 😄
30.01.24 12:47
0 0

Да. Действительно...) Протормозил)

Да. Действительно...) Протормозил)
трудовую карьеру начинал дизайнером в фотостудии в 2000-х, если вначале цифровых фоток было мало то к 2005 году поток значительно возрос и встала необходимость оперативно обрабатывать большое количество файлов + иногда вносить коректировки по цвету каждой фотке, мы сами себе писали екшны 7-9 действий который в принципе любую картинку на выходе превращали в готовую фотографию 10х15 готовую к печати, отредактированную по цвету/свету/гамме итд.

Тю, все пропустил, пока кота от клавиатуры отгонял)
Заведите ему свою (можно не подключать - коты в этом смысле неприхотливы). Сэкономите время на отгоняние. 😹 А моя младшая на внешний HDD хорошо отвлекается - он тёплый и жужжит.
30.01.24 13:25
0 2

Заведите ему свою
, но с подогревом, и с требованием еды по Enter-у.
30.01.24 14:32
0 1

Тогда придется подключать... И распознавать нажатие двух Enter'ов, ↩ еды и ↲ питья.
И не перепутайте! 😺
30.01.24 14:38
0 1

воду кот сам умел добывать.
Рычажный смеситель - вещь!
Но закрывать не научился 😒
30.01.24 18:04
0 0

Есть ли такое решение?
Теоретически в фотошопе есть скрипты. Но сэр Генри, если вам хоть немного дорога жизнь.... 😉

Автоматизировать такое в Фотошопе - это немного забивать гвозди компьютером )

Именно такие простые операции для многих файлов делают многие просмотрщики файлов. Я например FastStone Image Viewer использую. Там есть Batch Convert - либо вызвать по F3, либо выбрать файлы и в контекстном меню выбрать.

Есть еще ImageMagick... Я его я когда-то использовал, там вообще всё продвинуто, и можно крутые скрипты писать по конвертированию картинок с накладыванием чего угодно на них.

Но и опять же, в век ИИ живем )
30.01.24 12:03
0 3

Именно такие простые операции для многих файлов делают многие просмотрщики файлов. Я например FastStone Image Viewer использую.
Я тоже его использую. Но мне не надо для многих файлов. Мне нужно для одного. Но чтобы одной кнопкой.
30.01.24 12:15
0 0

взять картинку, отличную от формата 16:9 (например, квадрат или прямоугольник, чья ширина меньше удвоенной высоты),
Удвоенная высота по ширине - это 18:9
30.01.24 12:02
0 0

Удвоенная высота по ширине - это 18:9
А и действительно. Сейчас поправлю.
30.01.24 12:11
0 0

Выбрать изменение Canvas Size не в пикселях, а в процентах.
30.01.24 11:55
0 1

Выбрать изменение Canvas Size не в пикселях, а в процентах.
Будет в процентах от исходного изображения. То есть для набора картинок с разным размером решение не подходит.
Будет работать если отношение сторон в исходных картинках, при разном их размере, одинаковое.

Нет. В Canvas Size соотношение сторон не важно. Там два совершенно независимых параметра. Будет работать при любом соотношении сторон.

Выбрать изменение Canvas Size не в пикселях, а в процентах.
В процентах чего? Мне в ширине надо задать имеющуюся высоту, умноженную на 1,8.
30.01.24 12:14
0 0

Нет. В Canvas Size соотношение сторон не важно. Там два совершенно независимых параметра. Будет работать при любом соотношении сторон.
Простите. У вас два изображения, одно 130 на 170, другое 200 на 100.
Вам надо получить ОБА с отношением 16:9
На какой процент от имеющегося размера вы предлагаете увеличить размер холста чтобы В ОБОИХ случаях получить 16:9?

Там проценты от исходной величины, а не от высоты, насколько я помню.
30.01.24 12:19
0 1
Теги
Сортировать по алфавиту или записям
BLM 21
Calella 143
exler.ru 272
авто 442
видео 3997
вино 359
еда 500
ЕС 60
игры 114
ИИ 29
кино 1581
попы 191
СМИ 2759
софт 930
США 132
шоу 6