Запуск скриптов Photoshop из PHP?

Я создаю веб-службу, которая вращается вокруг пользователей, создающих собственные файлы изображений на основе сведений, которые они вводят на веб-странице. У меня есть завершенные PSD-файлы вместе с соответствующими сценариями, но как я могу запустить сценарии Photoshop непосредственно из своего PHP-кода?

Я изучал использование дроплетов, но, насколько я вижу, я могу использовать их только для выполнения записанных действий с файлом.


person pablo    schedule 23.08.2014    source источник
comment
Пожалуйста, предоставьте некоторый код того, что вы пробовали, чтобы вопрос было легче понять.   -  person Bluedayz    schedule 23.08.2014
comment
Я не знаю, как бы это сформулировать проще. Кода нет, потому что я спрашиваю, как я могу это выполнить. Сценарий PHP вносит изменения в сценарий Photoshop (.jsx), который при запуске с соответствующим PSD вносит все изменения, указанные пользователем. Кажется, нет способа запустить их обоих из командной строки или чего-то подобного, так как я могу это сделать?   -  person pablo    schedule 23.08.2014
comment
К сожалению, я не знаю, как работает скрипт Photoshop. Вы имеете в виду, что хотите открыть файл с помощью PHP?   -  person Bluedayz    schedule 23.08.2014
comment
Я хочу использовать сценарий Photoshop для фиксации изменений в файле Photoshop .PSD. Я знаю, что это можно сделать, я просто не знаю, как это сделать.   -  person pablo    schedule 23.08.2014
comment
Привет, у тебя есть решение, если да, пожалуйста, поделись со мной.   -  person rkaartikeyan    schedule 18.05.2017


Ответы (2)


Это возможно, но вам нужно будет предоставить более подробную информацию о том, чего вы хотите достичь. Будет ли этот сервер Mac или Windows? Что-то, на чем можно было запустить Photoshop.

Вот встроенный пример выполнения скрипта PS с Photoshop из PHP на Mac в Терминале.

$ php -r "`open -b \"com.adobe.Photoshop\" myPhotoshopScript.jsx`;"

Или, что еще лучше, используйте Symfony Process и Файловая система для управления этим.

use Symfony\Component\Process\Process;
use Symfony\Component\Process\ProcessBuilder;
use Symfony\Component\Filesystem\Filesystem;

$fs = new Filesystem();

$photoshopProcessBuilder = new ProcessBuilder();
$photoshopProcessBuilder->setPrefix('open -b "com.adobe.Photoshop"');

if ($fs->exists($photoshopScriptFile)) {

    $photoshopProcessBuilder->setArguments(array($photoshopScriptFile));

    $photoshopScriptRunnerProcess = $photoshopProcessBuilder->getProcess();
    $photoshopScriptRunnerProcess->run();

    if (!$photoshopScriptRunnerProcess->isSuccessful()) {
        throw new \RuntimeException($photoshopScriptRunnerProcess->getErrorOutput());
    }

    // do some other stuff
}
person Adam Elsodaney    schedule 23.08.2014
comment
Спасибо за ответ. Рассматриваемый сервер — это Windows, и подход Symfony выглядит намного лучше. Я сижу на своем сотовом и не могу посмотреть, но есть ли в Symfony библиотека для доступа к COM-объектам? Если бы я мог получить доступ к COM API Photoshop, чтобы предотвратить запуск фактического графического интерфейса на сервере, это было бы идеально. - person pablo; 24.08.2014
comment
@pablo Круто, мне нужно также поэкспериментировать, как это сделать в Windows, должно быть очень похоже. Что такое COM API? Я никогда не слышал об этом. :) - person Adam Elsodaney; 24.08.2014

Похоже, единственный способ сделать это — записать действие, загружающее скрипт, и создать дроплет из действия, а затем выполнить его из PHP, передав PSD в качестве параметра. Это не так элегантно, как я хотел, но, похоже, других предложений нет.

person pablo    schedule 23.08.2014