2016-11-30 6 views
0

Я был удивлен, обнаружив, что StackOverflow имеет тег «Photoshop», потому что мне нужно объединить Photoshop (- Pro, подписку на Creative Cloud) и программирование (я опытный Java, C#, C++ sw engineer) для арт-проекта.Photoshop - есть ли язык программирования?

Я хочу взять папку с 2000 файлами JPEG и, начиная с первого файла, изолировать красный канал первого файла, зеленый канал второго файла и синий канал третьего файла и объедините их в один новый файл JPEG и сохраните. Затем повторите это для следующих трех файлов, следующих трех и т. Д.

Первоначально планировалось найти библиотеку JPEG для C# и делать все это, но если я смогу использовать Photoshop, который я обычно использую для других вещей, это может быть проще. У Photoshop есть сильный язык сценариев/программирования с синтаксисом, достаточно похожим на обычный язык программирования (условные циклы, файл i-o, определяемые пользователем переменные, функции или подпрограммы и т. Д.)?

+0

Вы можете использовать JavaScript с Photoshop https://www.adobe.com/content/dam/Adobe/en/products/photoshop/pdfs/cs6/Photoshop-CS6-JavaScript-Ref.pdf, но я бы сделал выше с ** ImageMagick **. Откуда вы знаете, что является «первым» * файлом и * «вторым» *. –

+0

Файлы генерируются камерой, снимающей 1 снимок каждые _n_ миллисекунды (где _n_ равно 600 или 1000), поэтому их имена файлов сделаны из timedatestamp, поэтому я могу использовать имя файла или реальное время создания. – user316117

ответ

0

Вы можете использовать Javascript, VBScript (в Windows) и Applescript (на Mac) для создания сценария Photoshop - Adobe website.

Однако для этой простой задачи я бы использовал ImageMagick, который установлен на большинстве дистрибутивов Linux и доступен для бесплатного использования на OS X и Windows.

Так что, если вы начинаете с этими тремя изображениями:

enter image description here

enter image description here

enter image description here

Вы можете ввести следующую команду в оболочке/Терминал/Командная строка:

convert 1.png -separate -delete 1,2 \ 
    \(2.png -separate -delete 0,2 \) \ 
    \(3.png -separate -delete 0,1 \) -combine result.png 

, чтобы получить это:

enter image description here

Эта команда занимает первое изображение, делит его на RGB каналов (внутренне пронумерованы как R = 0, G = 1, B = 2) и удаляет G и В. Тогда загружает второе изображение, разбивает его на RGB-каналы и удаляет R и B и третье изображение и удаляет все, кроме синего. Затем он объединяет оставшиеся 3 канала в одно выходное изображение.

Он будет работать одинаково для изображений ввода/вывода JPEG, если вы измените расширения.

+0

Итак, есть ли у ImageMagick API? В вашем примере это выглядит так, что он принимает только аргументы командной строки. Я думаю, что делать то, что хочу, где я могу указать программу в папку, полную файлов, читать имена файлов, сортировать их в правильном порядке, считать их и перебирать по ним, было бы проще сделать на реальном языке программирования. Тем более, если я хочу добавить дополнительные функции, например, позволить пользователю выбрать, в каком порядке разместить каналы, ограничить операцию областью интереса или дать ей удобный пользовательский интерфейс для просмотра входных и выходных папок , – user316117

+0

Очевидно, что я не знаю ваших настроек - как часто вам нужно это делать, насколько нужна гибкость или какая ОС вы используете. В OSX или Linux, то, что вы говорите, будет довольно легко в bash, но если вы в Windows, возможно, немного сложнее. Есть C/C++, C#, dotNet, Perl, Java, привязки PHP для ImageMagick, если вы хотите их - https://www.imagemagick.org/script/api.php –

Смежные вопросы