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

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

30.01.2024 11:39  7001   Комментарии (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 144
exler.ru 281
авто 449
видео 4105
вино 360
Что ещё почитать